Mysql之触发器小结

Mysql之触发器小结,第1张

概述一、概念触发器是自Mysql5.0开始支持的一种过程式数据库对象。 具体而言,触发器就是Mysql响应insert、update、delete语句而自动执行的一条Mysql语句(或位于begin和end语句之间的一组Mysql语句)。 需要注意的是触发器只对增、删、改语句响应,其他Mysql语句是不支持触发器的。二、创建触发器在数据库mysql_test的表customers中创建一个触发器cu 一、概念

触发器是自MysqL5.0开始支持的一种过程式数据库对象。
具体而言,触发器就是MysqL响应insert、update、delete语句而自动执行的一条MysqL语句(或位于begin和end语句之间的一组MysqL语句)。
需要注意的是触发器只对增、删、改语句响应,其他MysqL语句是不支持触发器的。

二、创建触发器

在数据库MysqL_test的表customers中创建一个触发器customers_insert_trigger,用于每次向表customers中插入一行数据时,将用户变量str的值设置为”one customer added!”。

create trigger MysqL_test.customers_insert_trigger after insert on MysqL_test.customers --触发时间可以after也可beforefor each row set @str='one customers added!';--for each row的意思是每一行执行都激活触发器

创建完毕后,可以插入一条数据测试一下

insert MysqL_test.customers values(null,'万华','F','长沙市','芙蓉区');

最后,在命令行输入下面SQL语句验证触发器

select @str;
三、删除触发器
drop trigger if exists MysqL_test.customers_insert_trigger;

注意:当删除一个表的同时,也会自动地删除该表上的触发器。另外,触发器不能更新或覆盖,如果要修改触发器,必须先删除它,再重新创建。

四、使用触发器 1.insert触发器

在insert触发器代码内,可引用一个名为new(不区分大小写)的虚拟表,来访问新插入的行,即使是before insert触发器也允许更改被插入的值(只要有相应的权限)。
如插入一条数据时,将用户变量str的值设置为新插入客户的cust_ID号:

create trigger MysqL_test.customers_insert_trigger after insert on MysqL_test.customers for each row set @str=new.cust_ID;
2.delete触发器

在delete触发器代码内,可以引用一个名为old(不区分大小写)的虚拟表,来访问被删除的行。

3.update触发器

在update触发器的代码内,可以引用new虚拟表,也可以引用old虚拟表,其中要注意的是old中的值全部是只读的,不能被更新。
如每次更新表customers时,将该表中cust_address列的值设置为原数据中cust_contact列的值。

create trigger MysqL_test.customers_update_trigger before update on MysqL_test.customers for each row set new cust_address=old.cust_contact;

更新一条数据 ,测试一下

update MysqL_test.customers set cust_address='武汉市' where cust_name='张三';

最后,在命令行输入以下SQL语句,会发现“张三”的cust_address的值并非“武汉市”,而是被触发器更新为原表中cust_contact列对应的值。

五、对触发器的进一步说明 触发器的执行是自动的应该多用触发器来保证数据的一致性,完整性和正确性。触发器不支持call语句,所以不能直接存储过程,只有手工地将所需的存储过程代码复制到触发器内。 总结

以上是内存溢出为你收集整理的Mysql之触发器小结全部内容,希望文章能够帮你解决Mysql之触发器小结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1151384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存