mysql触发器同步表的数据方式
作者:杨小木.
这篇文章主要介绍了mysql触发器同步表的数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
mysql触发器同步表的数据
触发器定义什么的就不介绍了
这里从定义触发器的语法格式开始
delimiter $ create trigger '触发器名称' after/before insert/update/delete on '表名' for each row begin '触发的sql语句'; end $; delimiter;
delimiter
:是mysql的分隔符,默认是分号(;),在例如触发器,存储过程这种情况,为了让其顺利的执行先去,就需要先重新定义一个特殊的分隔符,在结束操作后再重新更改回来;after
/before
:触发器被触发的时刻,选择触发器在触发事件之前发生还是触发事件之后发生;insert
/update
/delete:触发事件,在mysql中,只支持这三种操作来触发触发器;for each row
:行级触发器。指每行受影响,触发器都运行,mysql不支持语句触发器,所以必须写for each row;
示例
第一步:先创建两个表
图书馆表
图书表
创建插入触发器
-- 插入触发器 delimiter $ create trigger trig_insert_book after insert on `library` for each row begin insert into book(`ref`,`name`,`price`,`press`) values (new.book_ref,new.book_name,new.book_price,new.book_press); end $; delimiter ;
创建完成后,可以从设计表结果中查看
执行插入语句
insert into library(`library_id`,`book_ref`,`book_name`,`book_price`,`book_press`,`book_sum`,`library_name`,`library_adress`) values (11021,'ac1005','春秋',59.9,'小木出版社',60,'广州市图书馆','广州市')
可以看到,现在只对library表进行插入操作,插入成功后,查看library表数据
同时再去才可能book表数据
可以发现,book的表数据也同步插入
对比触发器的sql语句与结果
(因为这里我的book表的id字段是自增的,所以不需要在触发器中去设置id)
创建更新触发器
-- 更新触发器 delimiter $ create trigger trig_update_book after update on `library` for each row begin update book set ref=new.book_ref,name=new.book_name,price=new.book_price,press=new.book_press; end $ delimiter;
执行更新语句
update library set book_name ='冬夏' where library_id=11021
更新结果
创建删除触发器
delimiter $ create trigger trig_delete_book after delete on `library` for each row begin delete from book where ref = old.book_ref; end $; delimiter;
执行删除语句
delete from `library` where book_ref = 'ac1005'
删除结果
总结
以上即为mysql触发器的同步表操作。仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。