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

    触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。(触发器只能创建在永久表上,不能对临时表创建触发器)。

           After:检查约束后触发;before:检查约束前触发

           对同一个表相同出发时间的相同触发事件,只能定义一个触发器。eg:

    CREATE TRIGGER  trigger_name  trigger_time  trigger_event

    ON tbl_name FOR EACH ROW

    trigger_stmt

     

    create  trigger 触发器名称
    after/before  insert/update/delete on 表名
    for each row
    begin 
    sql 语句—一个或者多个语句�范围在 insert/update/delete内;
    end

    其中:

    trigger_name:标识触发器名称,用户自行指定;

    trigger_time:标识触发时机,取值为 BEFORE AFTER

    trigger_event:标识触发事件,取值为 INSERTUPDATE DELETE

    tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;

    trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN END 包含的多条语句。

     

    由此可见,可以建立6种触发器,即:BEFORE INSERTBEFORE UPDATEBEFORE DELETEAFTER INSERTAFTER UPDATEAFTER

     

    删除触发器:

    一次可以删除一个触发程序,如果没有制定的schema_name,则默认为当前数据库,语法:

           drop trigger [schema_name.]trigger_name

     

    查看触发器

        show tiggers;                                   //查询所有触发器

        information_schema.tiggers                    //可以查询指定触发器的指定信息

    触发器的使用

           限制:

           (1)、触发程序不能调用将数据返回客户端的存储程序,也不能使用采用call语句的动态SQL语句,但是允许存储程序通过参数将数据返回触发程序。也就是存储过程或者函数通过OUT或者INOUT类型的参数将数据返回触发器是可以的,但是不能直接返回数据的过程。

           (2)、不能再触发器中使用以显示或隐式方式开始或结束事务的语句,如START TRANSACTION、COMMIT或ROLLBACK.

           MySQL的触发器是按照before触发器、行操作、after触发器的顺序执行的,其中任何一步操作发生错误都不会继续执行剩下的操作。

    魔由心生,有万境纵横,无一道清静,无量寿佛!
  • 相关阅读:
    硬件加速 Hardware Accelerated [MD]
    Redis 常见面试题(2020最新版)
    1秒时限情况下算法复杂度要求
    linux ikatago-server
    Linux踢出其他正在SSH登陆用户
    多个Git帐号的SSH key切换(不同网站的gitlab&github)
    RTL8201 替换适配国产JL11网卡
    网卡PHY 移植注意事项
    django shell执行命令来批量更新model 数据
    git 设置和取消socks5 代理
  • 原文地址:https://www.cnblogs.com/qihuan/p/4238106.html
Copyright © 2011-2022 走看看