触发器中的回滚

时间:2015-09-13 08:31:01

标签: sql sql-server tsql

我创建了一个触发器check_id。 有了这个触发器,我想在Insert上回滚User语句User.Id = 4

ALTER TRIGGER check_id on USER
FOR INSERT
AS
 BEGIN

   IF 4 = (SELECT Id from inserted)
    BEGIN
        ROLLBACK;
    END
 END

但是当我在User上插入Id = 4时,就像这样:

INSERT INTO USER (Id, Name)
VALUES (4, 'Emmanuel') 

我收到错误:

  

回滚在原子过程中不可用

我错了什么?如何在触发器中回滚INSERT?

1 个答案:

答案 0 :(得分:4)

改为使用检查约束:

<强> SqlFiddle

 ALTER TABLE [user] ADD CONSTRAINT chk_user CHECK (id <> 4);