2017-02-22 71 views
2

這是我的僞代碼,用於訪問Firebird觸發器中的新變量和舊變量。在Firebird觸發器中處理新變量和舊變量

create trigger my_trigger for cards 
    before insert or update 
as 
    declare var_reccord cards; 
begin 
    if (inserting) then 
    begin 
     var_reccord = new; 
    end 
    else 
    begin 
     var_reccord = old; 
    end 

    -- USE var_reccord 
end 

但這不適用於我。我怎樣才能做到這一點?

回答

3

看來你想使用類似Oracle的%ROWTYPE,但不幸的是目前的Firebird版本不支持。

oldnew上下文變量允許訪問列,而不是整個行。換句話說,你必須像old.columnName那樣使用它們。有關更多信息,請參閱documentation

例如,如果表cards有一個字段foo,那麼你可以使用它像

create trigger my_trigger for cards 
    before insert or update 
as 
    declare var_foo TYPE OF COLUMN cards.foo; 
begin 
    if (inserting) then 
    begin 
     var_foo = new.foo; 
    end 
    else 
    begin 
     var_foo = old.foo; 
    end 

    -- USE var_foo 
end