这是我在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
但这对我不起作用。我怎么能这样做?
答案 0 :(得分:4)
您似乎希望使用类似Oracle %ROWTYPE
的内容,但遗憾的是,目前的Firebird版本不支持此类内容。
old
和new
上下文变量允许访问列,而不是整行。换句话说,您必须像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