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

        触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。

    有begin end体,begin end;之间的语句可以写的简单或者复杂

    1. 什么条件会触发:INSERT,DELETE、UPDATE
    2. 什么时候触发:在增删改前或者后
    3. 触发频率:针对每一行执行
    4. 触发器定义在表上,附着在表上
    5. 每个表最多支持6个触发器
    6. 单一触发器不能与多个事件或多个表相关联
    7. 如果before触发器失败,则mysql将不执行请求操作,如果before触发器或语句本身失败,,MySQL将不执行after触发器(如果有的话)
    8. 触发器不能更新或覆盖,为了修改一个触发器,必须先删除,再重新创建
    9. 触发器内不支持call语句,不能从触发器内调用存储过程

    触发器是针对每一行的;对增删改非常频繁的表上切记不要使用触发器,因为它会非常消耗资源。

    创建触发器语句

    mysql> create trigger trigger_name [after|before] [delete|insert|update] on table_name
        -> for each row
        -> begin
        -> ...
        -> end;

    INSERT触发器

    1. 在insert触发器代码内,可以引用一个名为new的虚拟表,访问被插入的行
    2. 在before insert触发器中,new中的值可以被更新
    3. 对于auto_increment列,new在insert执行钱包含0,在insert执行后包含新的自动成值

    DELETE触发器

    1. 在delete触发器代码内,可以引用一个名为old的虚拟表,访问被删除的行
    2. old中的值全部只读不能被更新

    UPDATE触发器

    1. 在update触发器代码中,可以引用一个名为old的虚拟表访问以前(update语句前)的值,引用一个new的虚拟表访问新的更新的值
    2. 在before update触发器中,new中的值可能是被更新(允许更改将要用于update语句中的值)
    3. old中的值全部是只读,不能更新
  • 相关阅读:
    C++中四种类型转换方式
    LeetCode——Move Zeroes
    LeetCode——Construct the Rectangle
    LeetCode——Add Digits
    LeetCode—— Invert Binary Tree
    LeetCode——Sum of Two Integers
    LeetCode——Find the Difference
    LeetCode——Maximum Depth of Binary Tree
    kafka 安装及部署
    apache kafka系列之server.properties配置文件参数说明
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10359532.html
Copyright © 2011-2022 走看看