mysql触发器的实际应用
2017-08-21 13:29
417 查看
触发器应用
目的insert数据
document新增数据时候在dadata表里面新增数据并且状态设置为0
update数据
document的状态由0变成1触发更新dadata表的操作
document的状态为1时其他字段发生变化
delete数据
document的数据删除则对应的dadata表数据删除
建表sql
document
SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `document`; CREATE TABLE `document` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `title` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; INSERT INTO document VALUES ('1', '触发器测试1'); INSERT INTO document VALUES ('2', '触发器测试2');
dadata
DROP TABLE IF EXISTS `dadata`; CREATE TABLE `dadata` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` varchar(50) DEFAULT NULL, `status` varchar(10) DEFAULT '0000000000', PRIMARY KEY (`id`), UNIQUE KEY `1` (`pid`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
触发器
insert触发器
CREATE TRIGGER test_insert AFTER INSERT ON document FOR EACH ROW BEGIN if(NEW.status=1) THEN INSERT INTO dadata(pid) VALUES (NEW.id); END IF; END;
update触发器
CREATE TRIGGER test_updata AFTER UPDATE ON document FOR EACH ROW BEGIN if(OLD.status!=NEW.status && NEW.status=1) THEN INSERT INTO dadata(pid) VALUES (NEW.id) ON DUPLICATE KEY UPDATE status='00000000'; elseif(OLD.status=NEW.status && NEW.status=1 && (NEW.title!=OLD.title)) THEN UPDATE dadata SET status="0000000000" where pid=NEW.id; END IF; END;
delete触发器
CREATE TRIGGER test_delete AFTER DELETE ON document FOR EACH ROW BEGIN UPDATE dadata SET status="3333333333" where pid=OLD.id; END;
测试
请在document表中新增数据 , 修改数据 ,删除数据,在操作后查询dadata表的status的变化
此处忽略sql
相关文章推荐
- MySQL SHOW INDEX语法的实际应用
- MySQL SHOW INDEX语法的实际应用
- MySQL笔记之触发器的应用
- MySQL笔记之触发器的应用
- MySQL字符集(实际开发中应用)
- mysql之存储过程和触发器的应用
- 基于MySQL存储引擎加触发器的应用场景
- mysql分表和分区实际应用简介
- mysql 触发器,存储过程应用例子
- MySQL实际应用中遇到的锁问题
- mysql 实际应用场景case...when
- mysql触发器应用
- Mysql 触发器应用
- MySQL 备份的实际应用与功能介绍
- MySQL 查询缓存的实际应用代码示例
- mysql触发器的应用
- mysql触发器简单的应用
- 基于mysql事务、视图、存储过程、触发器的应用分析
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述