小编Prz*_*jda的帖子

当 Flag 值为 1 时触发以阻止更新

当下表中的 Flag 值为 1 时,我需要触发器帮助以防止更新列 Flag 之外的任何列(可以更新):

CREATE TABLE Tmp (Id INT, Type INT, TranDate DATE, Flag INT)
INSERT INTO Tmp VALUES (1, 2, '2017-04-24', 0)
INSERT INTO Tmp VALUES (2, 4, '2017-04-27', 1)
Run Code Online (Sandbox Code Playgroud)

我已尝试使用以下代码,但无法正常工作。

CREATE TRIGGER [dbo].[Prevent_Update_Trigger]
ON [dbo].[Tmp]
FOR UPDATE
AS
SET NOCOUNT ON
IF  EXISTS(SELECT NULL FROM dbo.Tmp t JOIN inserted i ON t.Id=i.Id AND t.Flag=1)
BEGIN
RAISERROR('You can not update when Flag value is 1', 16, 1)
ROLLBACK TRAN
SET NOCOUNT OFF
RETURN
END
SET NOCOUNT …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server sql-server-2014

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql-server ×1

sql-server-2014 ×1

trigger ×1