然后插入然后在sybase中更新

时间:2013-12-10 12:18:32

标签: sybase

我在网上搜索但我找不到答案

在oracle中,如果我们为trigere指定它的插入或更新,我们这样写:

  

创建或替换触发器TRG_LOGS
  INSERT或更新或删除后      ON TABOE_LOGS
     对于每一行
  DECLARE
  V_USERNAME VARCHAR2(100);
  BEGIN
  
  如果插入则   插入long_log(NAME)VALUE(:new.NAME)
  
  ELSE如果更新那么   插入long_log(NAME)VALUE(:OLD.NAME)
  END;
  END;

在关键字“insert”附近的错误语法上抛出错误。

1 个答案:

答案 0 :(得分:2)

对于Sybase,每个操作都是单独的触发器:

create trigger TRG_LOGS_INS on TABOE_LOGS
for INSERT
as
DECLARE @V_USERNAME varchar(100)
BEGIN
    insert into long_log
    select NAME from INSERTED
END

...

create trigger TRG_LOGS_UPD on TABOE_LOGS
for UPDATE
as
DECLARE @V_USERNAME varchar(100)
BEGIN
    insert into long_log
    select NAME from DELETED
END

不确定我的语法是否完全正确,但应该指向正确的方向。 INSERTED表(类似于Oracles new)将新记录存储在插入或更新操作上。 DELETED表(类似于Oracles old)将旧记录存储在更新或删除操作中。

更多信息和示例可在Sybase T-SQL Users Guide: Triggers

中找到