我是靠谱客的博主 淡淡期待,最近开发中收集的这篇文章主要介绍mysql中的触发器入门,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

触发器的概念

触发器包括触发条件,触发操作,以及触发执行的时间。

触发器的用处

在增删改操作之前或者之后进行级联的数据操作,一发而触动全局,所以叫做触发器。使用触发器可以方便用户进行表之间的关联修改,不需要手动写行业务逻辑的层面的代码。

触发器的使用方法

基本语法

create trigger [after [before]] [insert [update [delete]] ]
on table_name for each [row [statement]]
<操作>
where(触发条件)<触发动作体>

例子1:学生表插入数据之后,在time表中插入当前时间

create trigger trig1 after insert 
on student for each row 
insert into time values(NOW());

例子2:使用begin …end语句进行多语句触发

DEIMITER $$
create trigger trig2 after insert 
on student each row 
begin
	insert into  time values(NOW());
	insert into operator person(;fff;);
end$$
DELIMITER ;

例子3:使用new 和old语句进行,new是插入或者修改之后的新的数据,可以被触发器直接引用得到,old是删除后的数据。

delimiter ##
create tirgger trig3 before insert
on student for each row
set NEW,changeTime = NOW();

注意
1.set应该是before触发器应有的权限。
2.不能使用update 或者insert 更改其中的数据的值否则会不断调用触发器从而造成死循环。

实例

#DROP TRIGGER delArticle
#删除文章的时候级联删除标签表和标签文章表
CREATE TRIGGER delArticle AFTER DELETE 
ON article FOR EACH ROW
BEGIN
 DELETE FROM `comment` WHERE article_id = OLD.id;#更新评论表
 SELECT tag_id FROM article_tag WHERE article_id = OLD.id INTO @tag_id;#先选出文章标签表中标签的id
 DELETE FROM article_tag WHERE article_id = OLD.id; #更新文章-标签表
 UPDATE tag SET tag.count = tag.count - 1 WHERE id = @tag_id; #更新标签表;
 DELETE FROM tag WHERE count = 0;											 			#如果标签数量为0就该删除了
END;
  1. 相关的错误

(1) 调用时候只有call + 名字

call login_test();
而不是 call proceduer login_test();

(2) 不能有两个into
就是不能是
select id into s_id, count(1) into state

(3)命名一定要专业!!!!!

最后

以上就是淡淡期待为你收集整理的mysql中的触发器入门的全部内容,希望文章能够帮你解决mysql中的触发器入门所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部