CREATE TRIGGER [TR_tablename_INS] ON dbo.tablename
FOR INSERT
ASinsert into b (X,Y) select X,Y from insertedreturn

解决方案 »

  1.   


    diaorenhong的问题好像不是 nononono(null,null) 理解的那样。这个问题在Oracle中,设置为在插入前触发,只要直接修改Inserted的值即可。如在SQLServer中,必须根据主键进行Update了。
      

  2.   

    哦哦. 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
      

  3.   

    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
      

  4.   

    哦,上面的有点错!应该这样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 
      

  5.   

    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;
      

  6.   

    上面还没完呢,完整如下(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 ;