你这个写法对的,使用instead of 触发器,但是只是删除了数据库中已有的数据,还未插入数据,再写一句 insert into TC_EntImg(..........) select ......... from inserted
用触发器可以这样: CREATE TRIGGER [入口图像表——删除重复数据] ON dbo.TC_EntImg INSTEAD OF INSERT AS delete from TC_EntImg A,inserted B where A.EStationCode=B.EStationCode and A.Serial=B.Serialinsert TC_EntImg select * from inserted end 但这样做增加服务器负担,不如在前台先DELETE后insert。最好不要这样。
强烈建议在前台先DELETE后insert
teaism: 使用你写的触发器,提示语法错误 第4行 A 附近有语法错误 关键字 end 附近有错误
CREATE TRIGGER [入口图像表——删除重复数据] ON dbo.TC_EntImg INSTEAD OF INSERT AS delete A from TC_EntImg A,inserted B where A.EStationCode=B.EStationCode and A.Serial=B.Serialinsert TC_EntImg select * from insertedend
CREATE TRIGGER [入口图像表——删除重复数据] ON dbo.TC_EntImg INSTEAD OF INSERT AS delete TC_EntImg where exists (select 1 from inserted where TC_EntImg.EStationCode=EStationCode and TC_EntImg.Serial=Serial) insert TC_EntIma select * from inserted
insert into TC_EntImg(..........) select ......... from inserted
CREATE TRIGGER [入口图像表——删除重复数据] ON dbo.TC_EntImg
INSTEAD OF INSERT
AS
delete from TC_EntImg A,inserted B where A.EStationCode=B.EStationCode and A.Serial=B.Serialinsert TC_EntImg select * from inserted
end
但这样做增加服务器负担,不如在前台先DELETE后insert。最好不要这样。
使用你写的触发器,提示语法错误
第4行 A 附近有语法错误
关键字 end 附近有错误
INSTEAD OF INSERT
AS
delete A from TC_EntImg A,inserted B where A.EStationCode=B.EStationCode and A.Serial=B.Serialinsert TC_EntImg select * from insertedend
INSTEAD OF INSERT
AS
delete TC_EntImg where exists (select 1 from inserted where TC_EntImg.EStationCode=EStationCode and TC_EntImg.Serial=Serial)
insert TC_EntIma select * from inserted
2。最好不要“先删除再插入”,应该把判断insert还是update的责任推卸给客户端。