1
我讀觸發器的一些代碼。SQL Server的觸發器,不允許刪除行
CREATE TRIGGER No_DeleteCustomers
ON Customers
INSTEAD OF DELETE
AS
IF @@ROWCOUNT = 0
RETURN
RAISERROR('No deleting allowed', 11, 1)
但我很迷茫......不@@ROWCOUNT
用於顯示受影響的行數中的最後一條語句...這如何防止我從表中刪除行?
你是正確的,@@ ROWCOUNT用於檢查返回的行數。觸發器中的IF語句將檢查結果是否有零個記錄,然後執行RAISERROR語句。 RAISERROR語句將終止事務並返回消息'不允許刪除'。這是阻止你刪除行的原因。 – MayowaO
我很好奇爲什麼這個觸發器甚至存在。似乎可能拒絕刪除桌面上的特權將是一個更好的主意。 – Xedni
@Xedni當你對於大多數用戶來說是正確的,一些用戶(如SA)不能否認的任何特權,這樣的觸發可以幫助防止系統管理員錯誤地刪除行(當然,沒有什麼能阻止他們從禁用觸發,然後刪除,但這不太可能會被錯誤發生...) –