郁闷~~ 希望醒来的时候有人可以为我解答....一个未解决的触发器问题(80分)
表A (id主键) 表B(id外键)
当更新表A的id时表B里的id也要变化..
下面是我从N多人看的:但是只能更新一个表:
CREATE trigger trigger_subupdate2 on 表A
instead of UPDATE
as
if update(id)
begin
update 表B set id =B.id from 表B A ,inserted B,Deleted C where A.id=C.id
end
不过只能更新表B里的id但是表A里面的id却没有变化,这是怎么回事....晕??
我刚学触发器啥都不懂.还请各位大虾指点下有关于update触发器的主外键处理...谢谢了.小弟感激不尽..
------解决方案----------------------try
CREATE trigger trigger_subupdate2 on 表A
for UPDATE
as
if update(id)
begin
update 表B set id =B.id from 表B A ,inserted B,Deleted C where A.id=C.id
end
------解决方案--------------------CREATE trigger trigger_subupdate2 on 表A
for UPDATE
as
if update(id)
begin
update 表B set id =B.id from 表B A ,inserted B,Deleted C where A.id=C.id
end
------解决方案--------------------触发器分二类,一类是after触发器,一类是instead of触发器.
无论哪种触发器,被触发时SQLSERVER系统都会自动生成二个特有的虚拟表,修改前的行(旧值)被保存在触发器特有的deleted虚拟表中,修改后的行(新值)被保存在触发器特有的inserted虚拟表中.
after触发器的特点是基表中的数据已经被修改,而instead of触发器则不修改基表中的任何数据,具体怎么修改完全由用户在instead of触发器中决定,所以如果在instead of中没有写对基表更新的代码则基表不会被修改.
楼主使用的是instead of触发器,而触发器中只更新了B表,却没有更新A表(基表).