您好我正在使用本地Firebird数据库(2.5),该数据库是以编程方式创建和处理的(我无法访问的受版权保护的应用程序的一部分)。 真正困难的是我无法改变应用程序使用的表格,更重要的是因为它的设计(空值/重复/一般坏结构)我无法设置任何外键。
我试图做的是创建一组触发器来从插入的其他表中提取数据。
例如,当应用程序使用列插入作业记录时 (JOBID,ADDRESS_ID,...) 我想从ADDRESSES表中引用说ADDRESS1 所以我试过了:
CREATE TRIGGER JOBS_FKs FOR JOBS_SQL
ACTIVE before INSERT POSITION 0
AS
BEGIN
NEW.ADDRESS1 =(SELECT FIRST 1 ADDRESS1 FROM SC_ADDRESS WHERE ADDRESS_ID=NEW.ADDRESS_ID);
END^
或
SELECT FIRST 1 ADDRESS1 FROM SC_ADDRESS WHERE ADDRESS_ID=NEW.ADDRESS_ID INTO NEW.ADDRESS1
或
UPDATE JOBS_SQL SET...
但我总是得到:更新与并发更新的冲突 我也试图“在插入”之前“在TRANSACTION COMMIT上”无济于事
我做错了什么或触发根本不是答案?