在Linux系统上使用Informix数据库时,触发器是一种强大的工具,用于在特定的数据库事件发生时自动执行SQL语句。以下是Informix触发器的基本使用指南,包括创建触发器的语法和示例。
INSERT触发器
CREATE TRIGGER trigger_name INSERT ON table_name BEFORE [WHEN (condition)] (trig_action1, trig_action2,...) FOR EACH ROW [WHEN (condition)] (trig_action1, trig_action2,...) AFTER [WHEN (condition)] (trig_action1, trig_action2,...) [DISABLED | ENABLED]; DELETE触发器
CREATE TRIGGER trigger_name DELETE ON table_name BEFORE [WHEN (condition)] (trig_action1, trig_action2,...) FOR EACH ROW [WHEN (condition)] (trig_action1, trig_action2,...) AFTER [WHEN (condition)] (trig_action1, trig_action2,...) [DISABLED | ENABLED]; UPDATE触发器
CREATE TRIGGER trigger_name UPDATE [OF (column, column,...)] ON table_name BEFORE [WHEN (condition)] (trig_action1, trig_action2,...) FOR EACH ROW [WHEN (condition)] (trig_action1, trig_action2,...) AFTER [WHEN (condition)] (trig_action1, trig_action2,...) [DISABLED | ENABLED]; 创建基表和监控表
CREATE TABLE table_trigger1 ( id1 CHAR(10), -- id1, 唯一 name1 CHAR(20), -- 姓名 PRIMARY KEY(id1) ); CREATE TABLE table_trigger2 ( id2 CHAR(10), -- id2, 对应操作基表的id1, 这里的id2不能设置为主键, 因为对基表的某一行可以操作多次 kind VARCHAR(1), -- 类型, 用I来表示insert, U来表示update, D来表示delete time2 DATETIME YEAR TO FRACTION(5) -- 时间, 表示操作发生的时间 ); 创建触发器
-- Insert触发器 CREATE TRIGGER trigger_insert INSERT ON table_trigger1 REFERENCING NEW AS new FOR EACH ROW INSERT INTO table_trigger2 (id2, kind, time2) VALUES (new.id1, 'I', CURRENT); -- Update触发器 CREATE TRIGGER trigger_update UPDATE ON table_trigger1 REFERENCING OLD AS old FOR EACH ROW INSERT INTO table_trigger2 (id2, kind, time2) VALUES (old.id1, 'U', CURRENT); -- Delete触发器 CREATE TRIGGER trigger_delete DELETE ON table_trigger1 REFERENCING OLD AS old FOR EACH ROW INSERT INTO table_trigger2 (id2, kind, time2) VALUES (old.id1, 'D', CURRENT); ENABLED是默认值,表示触发器在触发事件发生时自动激活。DISABLED表示生成触发器但关闭,即执行触发事件时不激活触发器。通过上述步骤,您可以在Linux Informix数据库中创建和使用触发器,以实现数据的一致性和完整性。