文章描述:本文介绍了基于mysql数据库触发器的简单应用。
测试平台:mysql


触发器简介:
触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效,唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。


创建表tab1

CREATE TABLE tab1(
    id CHAR(16)
);

创建表tab2

CREATE TABLE tab2(
    id CHAR(16)
);

创建INSERT触发器

CREATE TRIGGER after_tab1_insert
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
    INSERT INTO tab2(id) VALUES(new.id);
END

INSERT测试: 查看tab2是否同步添加

INSERT INTO tab1 (id) VALUES('123456');

创建UPDATE触发器

CREATE TRIGGER after_tab1_update
AFTER UPDATE ON tab1
FOR EACH ROW
BEGIN
    UPDATE tab2 SET id = new.id where id = old.id;
END

UPDATE测试:查看tab2是否同步更新

UPDATE tab1 SET id='1234567890' WHERE id='123456';

创建DELETE触发器

CREATE TRIGGER after_tab1_delete
AFTER DELETE ON id1
FOR EACH ROW
BEGIN
    DELETE FROM tab2 WHERE id=old.id;
END

DELETE测试: 查看tab2是否同步删除

DELETE FROM tab1 WHERE id='1234567890';

删除触发器

DROP TRIGGER after_tab1_insert;
DROP TRIGGER after_tab1_update;
DROP TRIGGER after_tab1_delete;

查看触发器

SHOW TRIGGERS;

上述方法显示内容太多,不太容易查看,可以在数据库中查看:

SELECT 
TRIGGER_NAME,
EVENT_OBJECT_SCHEMA,
EVENT_OBJECT_TABLE
FROM 
information_schema.`TRIGGERS`;

注意事项:
1.old是指更新前的值,new是指更新后的值;
2.创建触发器前需要修改分割符: DELIMITER
3.并在创建完成后恢复默认: DELIMITER ;