哦哦. swordmanli看的仔细.MS SQL 中, 可以这样:CREATE TRIGGER [TR_tableBname_INS] ON dbo.tableBname FOR INSERT ASupdate tableBname set Y = (select Y from tableAname where X=tableBname.X) where X in (select X from inserted)return
CREATE TRIGGER [TR_tableBname_INS] ON dbo.tableBname FOR INSERT ASupdate tableBname set Y = tableAname.Y from tableAname where inserted.X=tableAname.X and inserted.X=tableBname.X return
哦,上面的有点错!应该这样CREATE TRIGGER [TR_tableBname_INS] ON dbo.tableBname FOR INSERT ASupdate tableBname set Y = tableAname.Y from tableAname,inserted where inserted.X=tableAname.X and inserted.X=tableBname.X return
create or replace trigger trigger_name after insert on tableAname for each row as begin update username.tableBname set y=new.y where x=new.x;
上面还没完呢,完整如下(oracle): create or replace trigger trigger_name after insert on tableAname for each row as begin update username.tableBname set y=new.y where x=new.x; end ;
diaorenhong的问题好像不是 nononono(null,null) 理解的那样。这个问题在Oracle中,设置为在插入前触发,只要直接修改Inserted的值即可。如在SQLServer中,必须根据主键进行Update了。
FOR INSERT
ASupdate tableBname set Y = (select Y from tableAname where X=tableBname.X)
where X in (select X from inserted)return
FOR INSERT
ASupdate tableBname set Y = tableAname.Y
from tableAname where inserted.X=tableAname.X and inserted.X=tableBname.X return
FOR INSERT
ASupdate tableBname set Y = tableAname.Y
from tableAname,inserted where inserted.X=tableAname.X and inserted.X=tableBname.X return
after insert on tableAname
for each row
as
begin
update username.tableBname set y=new.y
where x=new.x;
create or replace trigger trigger_name
after insert on tableAname
for each row
as
begin
update username.tableBname set y=new.y
where x=new.x;
end ;