这是我在 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
但这对我不起作用。我该怎么做?
最佳答案
您似乎想使用像 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
关于triggers - 在 Firebird 触发器中处理新旧变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397939/