我需要創建一個SQL Server觸發器來阻止更新並將其刪除到表Service
。SQL Server觸發器中的IF語句
此操作僅適用於Service
,其中列State
的樣本數據爲「已完成」。
它應該允許更新和刪除到Service
其中列State
的樣本數據是「活動」。
這就是我嘗試過的,我在執行else操作時遇到問題(即允許更新Service
,其中列State
樣本數據爲「活動」)。
CREATE TRIGGER [Triggername]
ON dbo.Service
FOR INSERT, UPDATE, DELETE
AS
DECLARE @para varchar(10),
@results varchar(50)
SELECT @para = Status
FROM Service
IF (@para = 'completed')
BEGIN
SET @results = 'An invoiced service cannot be updated or deleted!';
SELECT @results;
END
BEGIN
RAISERROR ('An invoiced service cannot be updated or deleted', 16, 1)
ROLLBACK TRANSACTION
RETURN
END
如果你想阻止更新和刪除 - 那麼爲什麼INSERT'也觸發?另外:你從來沒有看過'Deleted'和'Inserted'僞表,它告訴你*哪些行已被更新(或刪除) - 所以這是行不通的...... –
它返回價值'開具發票的服務不能更新或刪除!'。但我不確定它是否檢查條件是否爲 – Ayyub