在navicat for mysql中建立触发器

Mysql的触发器(trigger):监视某种操作,并触发另一种操作。简要说:对表M的操作A触发了对表N的操作B。

 

触发器创建语法四要素:

1.、引发对象(哪一张表引发的?也就是说表M是谁?)  

2、触发时间(after/before)  

3、被触发的操作(insert/update/delete)【也就是操作B是什么?位于begin和end之间】

4、本触发器名称

 

语法:

 

Create  trigger  triggerName【本触发器名称】

 

after/before  insert/update/delete on 表名【引发对象表M】

 

for each row   #这句话在mysql是固定的

 

begin

 

sql语句;

 

end;

 

 

上述语句含义:建立一个触发器,在【 insert/update/delete on 表名 】 之前或之后,执行begin和end之间的sql语句。

 

如何在navicat中建立触发器?

 

假设我有2个数据库,分别是pingce_2015,pingce_ge_2015,两个数据库中都有评委表,pingce_2015中的评委表的表名是user;pingce_ge_2015数据库中的评委表的表名是judges;同一个评委,要保证在两个表中的密码相同,假设 张三是两个数据库中的评委,那么必须要保证他在user表和judges表中的密码相同!

 

如果我在user表中修改了张三的密码,语句如下:

update  `user`  set   `user`.`password`='111'  where  `user`.user_name='张三'

那么,必须要修改 judges表中张三的密码,可以在navicat中使用触发器解决这个问题。

 

操作步骤:

1、  打开pingce_2015数据库,打开user表的设计,在触发器选项中,输入本触发器名称changeOtherPwd;

2、  触发选择after;勾选“刷新”【就是user表的update操作】

3、  将下面语句写在定义中:

 

begin 

  update  pingce_ge_2015.judges  set pingce_ge_2015.judges.`password` = new.`password`  where judge_name= new.user_name;

  end

 

解析:由于语句是在 user表的设计中书写的,所以new.`password` 表示user在update操作中的新的密码;new.user_name 表示user在update操作中的新的用户名。

 

对于update而言:被修改的记录,修改前的数据用old来表示,old.字段名表示被修改之前记录中的字段值;修改的后的记录,用new来表示,new.字段名表示被修改之后记录中的字段值。

 

当执行了:update   `user`  set  `user`.`password`='111' where  `user`.user_name='张三'

之后,触发器会自动更新judges  表中的张三的密码.

 

注意:不可以循环调用触发器!

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值