oracle中没这样的语法update a set a.id='1' where exists (select 1 from b where a.id=b.id);

解决方案 »

  1.   

    上面自己的语句错了
    update a set a.id='1' from a inner join b on a.id=b.id;
      

  2.   

    ORARichard(没钱的日子好难过啊)
    能帮我看看这个sql语句怎么改吗?
    begin
    update c set isnew='1'
    from table c inner join inserted i
    on c.id=i.id
    end 
      

  3.   

    begin
    update c set isnew='1'
    where exists( select 1 from inserted i where c.id=i.id);
    end;
      

  4.   

    update table set isnew='1'
    where exists(select 1 from inserted  where inserted.id=table.id);
      

  5.   

    begin
    update table c set c.isnew='1'
    where exists( select 1 from inserted i where c.id=i.id);
    end;
      

  6.   

    oracle有inserted这个临时表吗?
      

  7.   

    这个inserted不是你自己的表吗?
      

  8.   

    不是
    我语句是触发器里的~inserted是SQL的临时表
      

  9.   

    ALTER  TRIGGER [Accuse_update] ON dbo.Accuse 
    FOR INSERT,update
    AS
    update operator set isnew='1' 
    where departid = (select id from vwdepartment where departflag='1')
    if exists (select * from inserted)
    begin
    update c set isnew='1'
    from operator c inner join inserted i
    on c.departid=i.operationtypeid
    end else
    begin
    update c set isnew='1'
    from operator c inner join updated i
    on c.departid=i.operationtypeid
    end
    这是SQL里的触发器代码
      

  10.   

    operator是表
    vwdepartment是试图
      

  11.   

    你是什么版本的ORACLE啊,看不懂哎
      

  12.   

    这个是写在SQL的啊~我是想转成oracle的
      

  13.   

    这个UPDATED表示是什么意思,好象SQLSERVER中没看到有吗,
    我只知道有INSERTED和DELETED
      

  14.   

    UPDATED据说也是临时表。我也没听说过。可以想不考虑这个UPDATED只要能搞定inserted就可以了
      

  15.   

    CREATE OR REPLACE TRIGGER Accuse_update 
    AFTER INSERT ON Accuse
    FOR EACH ROW
    BEGIN
    update operator set isnew='1' 
        where departid = (select id from vwdepartment where departflag='1');
    update operator set isnew='1' 
        where departid=:new.operationtypeid;
    END;