diff --git a/codes/mysql/trigger_demo.sql b/codes/mysql/trigger_demo.sql new file mode 100644 index 0000000..fe72530 --- /dev/null +++ b/codes/mysql/trigger_demo.sql @@ -0,0 +1,58 @@ +/** + * Mysql 触发器(TRIGGER)创建、使用示例 + * @author Zhang Peng + * @date 2018/5/2 + */ + +############################################################# +# 运行本例的预置操作 +############################################################# + +-- 新建数据表 user +DROP TABLE IF EXISTS `user`; +CREATE TABLE `user` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id', + `username` varchar(64) NOT NULL DEFAULT 'default' COMMENT '用户名', + `password` varchar(64) NOT NULL DEFAULT 'default' COMMENT '密码', + `email` varchar(64) NOT NULL DEFAULT 'default' COMMENT '邮箱', + PRIMARY KEY (`id`) +) COMMENT='用户表'; + +-- 新建数据表 user_history +DROP TABLE IF EXISTS `user_history`; +CREATE TABLE `user_history` ( + `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户ID', + `operate_type` VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '操作类型', + `operate_time` VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '操作时间', + PRIMARY KEY (`id`) +) COMMENT='用户记录表'; + +############################################################# +# 创建触发器 +############################################################# + +-- 删除触发器 +DROP TRIGGER IF EXISTS `trigger_insert_user`; + +-- 创建触发器 +DELIMITER $ +CREATE TRIGGER `trigger_insert_user` +AFTER INSERT ON `user` +FOR EACH ROW +BEGIN + INSERT INTO `user_history`(user_id, operate_type, operate_time) + VALUES (NEW.id, 'add a user', now()); +END $ +DELIMITER ; + +-- 查看触发器 +SHOW TRIGGERS; + +############################################################# +# 测试 +############################################################# + +INSERT INTO `user`(username, password, email) +VALUES ('admin', 'admin', 'xxxx@163.com'); +SELECT * FROM user_history;