在Firebird触发器中处理新变量和旧变量

时间:2017-02-22 17:07:13

标签: triggers 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

但这对我不起作用。我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

您似乎希望使用类似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