MySQL 的触发器

发布于 2021-07-16 12:39:33 字数 1224 浏览 1455 评论 0

一、触发器定义

进行数据库应用软件的开发时,我们有时会碰到表中的某些数据改变,希望同时引起其他相关数据改变的需求,利用触发器就能满足这样的需求。 它能在表中的某些特定数据变化时自动完成某些查询。运用触发器不仅可以简化程序,而且还可以增加程序的灵活性。

触发器是一类特殊的事务,可以监视某种数据操作(insert/update/deleted)并触发相关操作(insert/update/deleted)。

创建触发器的 4 要素:

1、监视地点(table)
2、监视事件(insert/update/deleted)
3、触发时间(after/before)
4、触发事件(insert/update/deleted)

二、创建语法

在创建之前可以先查看一下已有哪些触发器:

show triggers

产出已有触发器

drop trigger triggerName

创建触发器的语法

create trigger 触发器名称
after/before(触发时间)
insert/update/deleted(监视事件)
on 表名(监视地址)
for each row
begin
sql1;
...
sqlN;
end

举个例子:

需求:
商品表:goods
订单表:order
当下1个订单时,对应的商品要相应的减少(买几个商品就减少几个库存)

分析:
监视谁:order
监视动作:insert
触发时间:暂选之后吧
触发事件:update

create trigger t1
after
insert
on order
for each row
begin
update goods xxxxx(update goods set num = num-2 where gid = 1)
end

三、触发器中引入行变量

insert(被监视的语句),产生的数据,能否在触发器中引用到?

create trigger t2
after
insert
on order
for each row
begin
update goods xxxxx(update goods set num=num-new.much(field) where gid = new.gid(field))
end

//new 表示对新行的引用
//old 表示对旧行的引用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文