2013-12-10 153 views
1

我沒有過網搜索,但我無法找到我的答案在Oracle
插入然後在SYBASE然後更新

,如果我們以指定trigere如果插入或更新,我們這樣寫:

創建或更換觸發器插入或更新後TRG_LOGS
或刪除
ON TABOE_LOGS
FOR EACH ROW
DECLARE
V_USERNAME VARCHAR2(100);
BEGIN

如果插入然後
插入到long_log(NAME)VALUE(:new.NAME)

ELSE如果更新THEN
插入到long_log(NAME)VALUE(:OLD.NAME)
結束;
END;

在關鍵字'insert'附近的語法錯誤上拋出錯誤。

+0

有東西deled相關的發現表和inser表人知道一些事情 – Moudiz

回答

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