zoukankan      html  css  js  c++  java
  • 触发器

    触发器是一种过程完整性约束(CREATE TABLE 中定义的是非过程性约束)。触发器是一段小程序,在程序在特定的时刻被自动触发执行。

    基本语法

    image

    语法含义:当某一事件(INSERT,DELETE,UPDATE)发生时,我们可以根据该事件产生的结果来判断是否执行后面的程序段。

    示例

    设计一个触发器,当进行teacher表更新元组时,其工资只能升不能降

    DELIMITER $$

    CREATE TRIGGER teacher_chgsal
    BEFORE UPDATE ON teacher
    FOR EACH ROW
        BEGIN
            IF NEW.salary < OLD.salary THEN
                INSERT INTO error_log VALUES("invalid salary update");
            END IF;
        END$$
    DELIMITER ;

    在上面的代码中,我们重新定义结束符为$$(MYSQL命令行客户端一个SQL语句的结束标志位是;),因为我们在写触发器程序时需要用到分号。上面的触发器规定在对teacher进行更新操作时之前,会对每个更新操作进行检查(FOR EACH ROW),因为用户的一条SQL语句可以进行多行更新。检查的内容是BEGIN…END中间的代码块。NEW表示更新后的元组,OLD表示在更新操作执行前数据库中存储的元组。如果发现更新的值小,则在error_log中插入一条记录。

    更新前的记录

    image

    更新后的记录

    image

    error_log表中的数据

    image

    error_log表中多了一条记录,表示更新出现错误(001的工资变少了)

    MYSQL触发器的使用请见

    https://dev.mysql.com/doc/refman/5.5/en/triggers.html

  • 相关阅读:
    C++闭包到C函数指针转化
    是否使用预编译头文件
    多线程模型一:只完成最新任务
    关于“函数针对入参判空并返回”
    C++函数参数的编写
    .Net Core(二) 下
    微信接口本地调试(IIS服务器)
    .Net Core 学习(二)上篇
    .Net Core学习(一)
    博客园的第一个博客
  • 原文地址:https://www.cnblogs.com/xidongyu/p/6017200.html
Copyright © 2011-2022 走看看