在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数据库中创建和使用触发器,以实现数据的一致性和完整性。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
相关推荐:Linux Oracle触发器使用指南