永发信息网

mysql之触发器before和after的区别

答案:2  悬赏:70  手机版
解决时间 2021-02-08 20:12
  • 提问者网友:戎马万世
  • 2021-02-08 17:06
mysql之触发器before和after的区别
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-02-08 17:33
这三个介词主要区别如下:

before意思是“在...之前”

He arrived before me. 他在我之前到达.

after意思是“在...之后”

C comes after B in the alphabet. 在字母表中C接在B后面.

until意思是“直到...时”

Until she spoke I hadn't realized she was foreign. 她要不说话我还一直不知道她是外国人.
追问:
那么根据时态要如何搭配呢?比如说before通常用于过去的过去,搭配过去完成时之类的(请再列举一下特殊的情况,谢谢)
回答:
朋友,这三个介词可以用于各种时态,没有说通常和什么时态搭配的。你看我上面的例句里,before不就是用于过去时吗?

你如果还有疑惑,找个具体的题我给你看看吧。
全部回答
  • 1楼网友:底特律间谍
  • 2021-02-08 18:26
数据库中触发器before与after认识 before与after区别: before:(insert、update)可以对new进行修改;after不能对new进行修改,两者都不能修改old数据。  before是先完成触发,再增删改,触发的语句先于监视的增删改,这样就有机会判断,修改即将发生的操作; after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新数量; 示例: 商品表g和订单表o和触发器 假设商品表有商品1,数量是10; 在订单表插入一条记录 insert into o(gid,much) values(1,20); 如果创建的触发器是after,则会发现在执行这个语句后,商品1的数量变成了-10。 也就是说触发的语句是在插入订单记录之后才执行的,这个时候是无法判断新插入订单的购买数量。 运用典型案例来区分二者的区别,新建一个触发器: #监视地点: 商品表o #监视事件:insert #触发时间:before #触发事件:update 案例:当新增一条订单记录时,判断订单的商品数量,如果数量大于10,就默认改为10 create trigger tg6 before insert on o for each row begin   if new.much > 10 then     set new.much = 10;   end if;   update g set num = num - new.much where id = new.gid; end$执行完,把之前创建的after触发器删掉,再来插入一条订单记录: insert into o(gid,much) valus(1,20)$ 执行完会发现订单记录的数量变为10,商品1的数量变为0了,就不会出现负数了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯