是否有可能(我假设:是)从触发器(Firebird 2.5)更新其他表。例如,我有一个表 X更新后触发器是这样的:
begin
if (new.CODE<>old.CODE) then
BEGIN
post_event 'CODE_CHANGE';
UPDATE Y SET CODE=10 WHERE ID=1;
END
end
或者
begin
if (new.CODE<>old.CODE) then
BEGIN
post_event 'CODE_CHANGE';
EXECUTE STATEMENT ('UPDATE Y SET CODE=10 WHERE ID=1');
END
end
但它不起作用(表 Y不会改变)。
触发器的完整定义(为了更好地理解)
SET TERM ^^ ;
CREATE TRIGGER ABC FOR X ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0 AS
begin
if (new.CODE<>old.CODE) then
BEGIN
post_event 'CODE_CHANGE';
EXECUTE STATEMENT ('UPDATE Y SET CODE=10 WHERE ID=1');
END
post_event 'CHANGE';
end ^^
第二个问题:如何为 UPDATE 命令提供参数(对于表 Y ) - 我的意思是我想在上面的代码中放入new.CODE(来自表 X的新值)而不是值“ 10 ”,如下所示:
UPDATE Y SET CODE=new.CODE WHERE ID=1
谢谢你的建议。
阿尔蒂克