CREATE TRIGGER Tri_Oper_BreakLaw
ON Oper_BreakLaw
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
--插入,修改
IF EXISTS(SELECT 1 FROM inserted)
BEGIN
--插入历史表
INSERT INTO AppInface_Oper_BreakLaw_List
SELECT BLID,GETDATE(),0 FROM inserted
;Merge into AppInface_Oper_BreakLaw as t
using inserted as i
on i.BLID = t.BLID
when matched then update set t.OpTime = GETDATE(),t.OpType=0
when not matched then insert values(i.BLID,GETDATE(),0);
--删除
IF EXISTS(SELECT 1 FROM deleted)
BEGIN
INSERT INTO AppInface_Oper_BreakLaw_List
SELECT BLID,GETDATE(),0 FROM deleted
;Merge into AppInface_Oper_BreakLaw as t
using deleted as i
on i.BLID = t.BLID
when matched then update set t.OpTime = GETDATE(),t.OpType=0
when not matched then insert values(i.BLID,GETDATE(),0);
END
END
GO
错误信息:
消息 102,级别 15,状态 1,过程 Tri_Oper_BreakLaw,第 19 行
'Merge' 附近有语法错误。
消息 102,级别 15,状态 1,过程 Tri_Oper_BreakLaw,第 31 行
'Merge' 附近有语法错误。
我都不知道我哪里搞错了,我分号加了,我平时这么写没有问题啊
是不是触发器里面的inserted,deleted表只能用一次?
------解决思路----------------------
你的数据库设了兼容模式?老版本不支持 Merge 语句。
------解决思路----------------------
是不是触发器里面的inserted,deleted表只能用一次?
没有这个说法
不过你少了一个END
------解决思路----------------------
第一个 IF 语句,没有 END 。
------解决思路----------------------
如果是这样,那就奇怪了,你翻看一下,那时候的语句,翻出来比较一下