如何在 HSQLDB 中编写触发器以在 table 中插入任何新记录之前更改 6 个字段(列)的 table 中的 2 个字段(列)值?
How to write Trigger in HSQLDB to change 2 field (columns) values in a table of 6 fields (columns) before insert of any new record in that table?
我有一个 table ABC,有 6 个字段(列为 a1、a2、a3、a4、a5),Log_ID 作为主键(第 6 列)。我有另一个 table XYZ,其中 Log_ID 作为外键。我想要在 BEFORE INSERT 处触发(因为线程正在监视插入)以确保在 ABC 和 XYZ 中插入新记录之前,ABC 的 a3 和 a4 中的值应该基于 a2 的值被覆盖为我指定的值在运行时触发。
例如,我希望每次以 a2='incoming' 和 a3='root' 和 a4='123456' 形式出现的文档都应该被 a3='user1' 和 a4=[=17= 覆盖] ...同样,作为 a2='outgoing' 和 a3='user' 和 a4='6789' 的文档应该被 a3='root' 和 a4='1234@3456 覆盖'
我会为这两种情况编写单独的触发器,还是两种情况都可以容纳在 1 个触发器中?
以及如何在插入之前编写这些触发器???
每个 table 只需要一个触发器。触发器将如下例所示:
CREATE TRIGGER trigone BEFORE INSERT ON abc
REFERENCING NEW ROW AS newrow FOR EACH ROW
BEGIN ATOMIC
IF newrow.a2 = 'incoming' AND newrow.a3 = 'root' THEN
SET newrow.a3 = 'user1';
END IF;
IF newrow.a2 = 'outgoing' THEN
SET newrow.a3 = 'root';
SET newrow.a4 = '123@234';
END IF;
END
我有一个 table ABC,有 6 个字段(列为 a1、a2、a3、a4、a5),Log_ID 作为主键(第 6 列)。我有另一个 table XYZ,其中 Log_ID 作为外键。我想要在 BEFORE INSERT 处触发(因为线程正在监视插入)以确保在 ABC 和 XYZ 中插入新记录之前,ABC 的 a3 和 a4 中的值应该基于 a2 的值被覆盖为我指定的值在运行时触发。 例如,我希望每次以 a2='incoming' 和 a3='root' 和 a4='123456' 形式出现的文档都应该被 a3='user1' 和 a4=[=17= 覆盖] ...同样,作为 a2='outgoing' 和 a3='user' 和 a4='6789' 的文档应该被 a3='root' 和 a4='1234@3456 覆盖' 我会为这两种情况编写单独的触发器,还是两种情况都可以容纳在 1 个触发器中? 以及如何在插入之前编写这些触发器???
每个 table 只需要一个触发器。触发器将如下例所示:
CREATE TRIGGER trigone BEFORE INSERT ON abc
REFERENCING NEW ROW AS newrow FOR EACH ROW
BEGIN ATOMIC
IF newrow.a2 = 'incoming' AND newrow.a3 = 'root' THEN
SET newrow.a3 = 'user1';
END IF;
IF newrow.a2 = 'outgoing' THEN
SET newrow.a3 = 'root';
SET newrow.a4 = '123@234';
END IF;
END