数据库学习之触发器

最近一直在补数据库知识,非计科出身的我知识漏洞的确有点小大。


1、触发器简单知识回顾:

触发器是一种特殊的存储过程,特殊在其执行不是由程序调用,也不是手工启动,而是被某个设定好的事件触发。


2、如何定义触发器呢?

CREATE    TRIGGER    trigger_name    trigger_time    trigger_event    ON    tb_name    FOR    EACH    ROW    trigger_stmt;

trigger_name 是你个触发器起的名字

trigger_time 是触发程序的动作时间,可以为BEFORE 或 AFTER, 用来指明触发程序是在激活它的语句之前或之后触发。

trigger_event 指明了激活触发程序的语句类型,可以为 INSERT,UPDATE , DELETE。


示例:

CREATE TABLE ins ( t_id	INT,  t_name    VARCHAR(20)); # 创建表ins
CREATE TRIGGER ins_tr   BEFORE INSERT ON ins FOR EACH ROW SET NEW.t_name = "helloworld";    #无论向表中添加什么数据字段,t_name="helloworld"
INSERT INTO ins (t_id) VALUES (1);
SELECT * FROM ins;
+------+------------+
| t_id | t_name     |
+------+------------+
|    1 | helloworld |
+------+------------+
1 row in set (0.00 sec)

上面的例子实现了一个极其简单的触发器,无论向表中添加什么数据字段,触发器都会将相应的t_name 设置为helloworld。 触发器ins_tr 会因为事件INSERT而触发,完成对
t_name 的更新。


3、常见问题:

ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

这个错误表明该表已经有触发器了,如果你又不记得自己曾经创建过什么关于这张表的触发器,可以:

SHOW     TRIGGERS;

在TRIGGER对应的一列中,可以找到已经创建的TRIGGER。然后

DROP    TRIGGER     tri_name;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值