《MySQL入门很简单》学习笔记(9)之第9章触发器(关键词:数据库/MySQL/触发器)

第9章 触发器

    触发器(TRIGGER)是由事件来触发某个操作。
    这些事件包括:
        INSERT;
        UPDATE;
        DELETE。
    当数据库系统执行这些事件时,就会激活触发器执行相应的操作。

9.1 创建触发器

    触发器是由INSERT、UPDATE、DELETE等事件来触发某种特定操作。
    满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。
    这样做,可以保证某些操作之间的一致性。
    例如,当学生表中增加了一个学生的信息时,学生的总数就必须同时改变。可以在这里创建一个触发器,每次增加一个学生的记录,就执行一次计算学生总数的操作。这样就可以保证每次增加学生的记录后,学生总数是与记录数是一致的。触发器触发的执行语句可能只有一个,也可能有多个。

9.1.1 创建只有一个执行语句的触发器

    语法:
        CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
                ON 表名 FOR EACH ROW 执行语句

这里写图片描述

9.1.2 创建有多个执行语句的触发器

    语法:
    CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
            ON 表名 FOR EACH ROW
            BEGIN
            执行语句列表
            END
    注意:
    一般情况下,MySQL默认是以“;”作为结束执行语句。在创建触发器过程中需要用到“;”。为了解决这个问题,可以用到DELIMITER语句。如“DELIMITER &&”,可以将结束符号变成“&&”。当触发器创建完成后,可以用命令“DELIMITER ;”来将结束符号变成“;”。

9.2 查看触发器

    查看触发器是指查看数据中已存在的触发器的定义、状态和语法等信息。
    方法包括:
    SHOW TRIGGER语句;
    查询information_schema数据库下的trigger表等。

9.2.1 SHOW TRIGGER语句查看触发器信息

    在MySQL中,可以执行SHOW VARIABLES语句来查看触发器的基本信息。
    语法:
        SHOW TRIGGERS;

9.2.2 在trigger表中查看触发器的信息

    在MySQL中,索引触发器的定义都存在information_schema数据库下的triggers表中。
    查询triggers表,可以查看到数据库中索引触发器的详细信息。查询的语句如下:
    语法:
        SELECT * FROM information_schema.triggers;
    查询指定触发器的语法:
        SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='触发器名';

9.3 触发器的使用

    在MySQL中,触发器的执行顺序是BEFORE触发器、表操作(INSERT、UPDATE、DELETE)、AFTER触发器。
    在激活触发器时,对触发器中的执行语句存在一些限制。例如,触发器中不能包含START TRANSACTION、COMMIT、ROLLBACK等关键词,也不能包含CALL语句。
    在触发器执行过程中,任何步骤出错都会阻止程序向下执行。
    但是对于普通表来说,已经更新过得记录不能回滚的。
    更新后的数据将继续保持在表中。
    因此,设计触发器时要认真考虑。

9.4 删除触发器

    删除触发器指删除数据库中已经存在的触发器。
    语法:
        DROP TRIGGER 触发器名;
    注意:
    如果不需要某个触发器时,一定要将这个触发器删除,如果没有将这个触发器删除,name每次执行触发事件时,都会执行触发器中的执行语句。执行语句会对数据库中的数据进行某些操作,这会造成数据的变化

9.7 常见问题及解答

  1. MySQL中创建多条执行语句的触发器总是遇到分号就结束创建,然后报错?

        MySQL中,创建多条执行语句的触发器时,需要用到BEGIN...END的形式。每个执行语句都必须是以分号结束。但是,这样就会出问题。因为,系统默认分号是SQL程序结束的标志,遇到分号整个程序就结束了。要解决这个问题,就需要使用DELIMITER语句来改变程序的结束符号。如“DELIMITER&&”,可以将程序的结束符号变成“&&”。如果要把结束符号变回分号,只要执行“DELIMETER;”即可。
    

参考文献:
1.《MySQL入门很简单》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值