文章目录
- 1、创建触发器
- 2、 查看触发器
- 3、删除触发器
1、创建触发器
语法:
CREATE TRIGGER 触发器名称
BEFORE/AFTER INSERT/UPDATE/DELETE
ON 表名 FOR EACH ROW
BEGIN
SQL逻辑
END;
BEFORE 或 AFTER 表示之前 还是 之后触发
INSERT 或 UPDATE 或 DELETE 表示监听 INSERT操作 还是 UPDATE操作 还是DELETE操作
实例:
CREATE TRIGGER user_insert_trigger
AFTER INSERT ON user FOR EACH ROW
BEGIN
INSERT INTO user_operation(operation_type, operation_content) values ('insert', CONCAT('添加后的数据:', new.name));
END;
为 user 表创建名为 user_insert_trigger 的触发器,触发器内容是当user表执行insert操作后,执行INSERT INTO user_operation(operation_type, operation_content) values (‘insert’, CONCAT(‘添加后的数据:’, new.name)); 这个sql语句,语句中可以通过new.的形式拿到insert 到 user表的数据
这里除了new.外还有old.
new.表示新的数据;old. 表示原来的数据
2、 查看触发器
show TRIGGERS;
3、删除触发器
DROP TRIGGER 触发器名称
测试数据:
创建2张表,一张user表,一张user_operation表,然后为user表创建触发器,当user表有数据变化时,向 user_operation 表记录操作
user
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
user_operation
CREATE TABLE `user_operation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`operation_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`operation_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
创建触发器
添加insert类型)
CREATE TRIGGER user_insert_trigger
AFTER INSERT ON user FOR EACH ROW
BEGIN
INSERT INTO user_operation(operation_type, operation_content) values ('insert', CONCAT('添加后的数据:', new.name));
END;
use表添加数据测:
INSERT INTO user(name, age) VALUES('叶绿思雨', 17);
user_operation表中查看insert操作的触发器生成的数据:
查到相应的数据已经生成,说明insert类型的触发器正常被触发
MYSQL文章推荐:
MYSQL视图:
mysql存储