触发器基础知识

  • 触发器:是mysql数据库对象之一,该对象与编程语言中的函数非常相似,都需要声明、执行等。但是其执行不是由程序调用,也不是由手工启动,而是由事件来触发激活从而实现执行。

  • 为什么要使用数据库对象触发器?

    • 这是因为当我们在学生表中拥有学生名字字段、学生总数字段等,每当添加一条关于学生的记录时,学生的总数就必须发生改变;其次,在顾客信息表中拥有顾客名字字段、顾客电话号码字段、顾客地址缩写字段等,每当添加一条关于顾客记录时,都需要检查顾客电话号码格式和地址缩写格式是否正确。这两种实例虽然所需实现的业务逻辑不同,但它们也有共同之处,即都需要在表发生改变时,自动进行一些处理。这时就可以使用触发器对象来处理数据库对象。
  • 可以设置触发器的语句

    • DELETE语句
    • INSERT语句
    • UPDATAE语句
    • 其他SQL语句不会激活触发器,在具体应用中,之所以会经常使用触发器数据库对象,是由于该对象能够加强数据库表中数据的完整性约束和业务规则等。
  • 创建一条执行语句的触发器

    • CREATE TRIGGER trigger_name BEFORE | AFTER triggr_event ON table_name FOR EACH ROW trigger_stmt;

      • trigger_name参数表示所要创建触发器的名字;
      • BEFORE和AFTER指定了触发器执行的时间;
      • trigger_evnt表示触发事件,即触发器执行条件;
      • table_name参数表示操作的表;
      • FOR EACH ROW参数表示任何一条记录上的操作满足触发事件都会触发该触发器;
      • trigger_stmt参数表示激活触发器后被执行的语句。
    • 例子:CREATE TRIGGER trigger_name BEFORE INSERTt ON users FOR EACH ROW INSERT INTO t_diary VALUS(NULL,‘users’,now()); 当在表users中执行INSERT语句时,就在t_diary表中插入数据。

  • 创建包含多条执行语句的触发器

    • CREATE TRIGGER trigger_name BEFORE | AFTER triggr_event ON table_name FOR EACH ROW BEGIN trigger_stmt END; (一般情况下,在SQL语句中“:”是用来作为语句的结束符号,可是在创建包含多个事件的触发器时需要用到";"座位置ing语句的结束符号。为了解决该问题,可以使用关键字DELIMITER语句实现将结束符号重新设置。)
    • 例子:DELIMITER &&(将结束符号设置为&&)CREATE TRIGGER trigger_name BEFORE INSERT ON users FOR EACH ROW BEGIN INSERT INTO t_diary VALUS(NULL,‘users’,now()); INSERT INTO t_diary VALUS(NULL,‘users’,now()); END && 最后将结束语句改回来执行DELIMITER ;
  • 触发器执行后的信息都保存在一个表中,在上述例子中保存在t_diary表中,可以查看该表的信息来获取触发器执行的语句信息。SELECT *FROM t_diary;

  • 查看触发器SHOW TRIGGERS;执行完该语句后,会显示一个记录所有触发器信息的列表。在该表中保存着触发器名称、激活该触发器的事件、触发器事件所操作的表、触发器激活所执行的语句、触发器所执行的时间等。

  • 删除触发器 DROP TRIGGER tirgger_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值