触发器的简单应用 需求:表A,有两个字段ID,a;某一条记录有update操作时,如果其字段a>10,则把这条记录插入到B表中(B中也有ID这个字段,如果已经存在这个ID的了,则不执行插入操作,否则执行) [最优解释] create trigger triTest on A for update as begin insert b select xxx,xxx from inserted a where not exists(select * from b b where a.id=b.id) and a.id>10 end [其他解释] create trigger triTest on A for update as begin if (updated.a>10) and updated.ID not in(select ID from b) begin insert b values(getdate(),updated.ID,a) end end
想问下,select xxx,xxx from inserted a,这句怎么理解呢? 可能我没有说清楚,b表的字段跟a表的字段并不完全一样。。。 [其他解释] create trigger triTest on A for update as begin insert b values(getdate(), select id from inserted a where not exists(select * from b b where a.id=b.id) and a.id>10,'修改') end 我现在改成了这样,但是结果不对,当a.id<=10的update时,仍然会执行插入操作,只是b表中的id为空而已 [其他解释]
所以让你自己定义xxx字段 [其他解释]
create trigger triTest on A for update as begin insert b select getdate(),id,'修改' from inserted a where not exists(select * from b b where a.id=b.id) and a.id>10 end