sqserver2008触发器
先上代码
先建个表用于测试
CREATE TRIGGER INSERT_forbidden on s after INSERT AS BEGIN RAISERROR('禁止向s中插入数据',2,3) ROLLBACK--不加这一句不会回滚,抛错后将直接插入 END
上述触发器执行情况:当向s表插入数据时禁止插入,插入时抛错(raiserror)如下
语法:
CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE] AS
BEGIN -- T-SQL语句
END GO --with encryption 表示加密触发器定义的sql文本 --delete,insert,update指定触发器的类型
20180815:解决sqlserver无before问题,用instead of替换
CREATE TRIGGER INSERT_forbidden on reg instead of INSERT AS BEGIN if EXISTS(select 1 from reg where regStr=(select regstr from INSERTED))BEGIN RAISERROR('禁止向注册表中插入重复数据',1,1) ROLLBACK--不加这一句不会回滚,抛错后将直接插入 END ELSE BEGIN INSERT into reg (regStr) select regStr from INSERTED END END
测试
INSERT into reg VALUES('4')
测试前
第一次测试结果:
第二次测试结果
本文来自博客园,作者:每天都要学一点,欢迎讨论和转载,转载请注明原文链接:https://www.cnblogs.com/yanan7890/p/9284927.html