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

    Mysql触发器

    1.创建触发器

    注意:触发器只能创建在永久表上,不能对临时表创建触发器,语法如下:

    CREATE TRIGGER trigger_name trigger_time trigger_event 
    ON table_name FOR EACH ROW trigger_stmt
    
    trigger_time:触发器触发的时间,可以使before或者after,before是指的在检查约束前触发,而after是检查约              束后触发.
    trigger_event:触发器触发的事件,可以是insert,update或者delete.
    使用别名old和new来引用触发器中发生变化的记录内容,现在触发器还只支持行级触发,不支持语句级触发.
    
    2.创建一个student表,复制一份命名为student_back:
    CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    
    3.创建触发器:
    delimiter $$
    CREATE TRIGGER ins_stu AFTER INSERT ON student FOR EACH ROW
    BEGIN
    	INSERT INTO student_back (id, NAME, age)
    VALUES
    	(new.id, new. NAME, new.age) ;
    END ;
    $$
    delimiter ;
    
    

    插入一条数据:

    INSERT INTO student(name,age) VALUES("zhansgan",15);
    

    image.png

    //注意:对于有重复记录需要进行update的insert,触发器触发的顺序是before insert , before update ,after update;对于没有重复记录的insert,就是简单地执行insert操作,触发器触发的顺序是before insert,after insert . 对于那些实际执行update操作的记录,仍然会执行before insert触发器的内容,在设计触发器的时候一定要考虑这种情况,避免错误地触发了触发器.
    
    4.删除触发器
    drop trigger trigger_name
    
    5.查看触发器
    show triggers 
    
    
    
  • 相关阅读:
    07_控制线程_join_线程插队
    06_线程的生命周期及状态
    05_线程间通信
    04_线程的创建和启动_使用Callable和Future的方式
    03_线程的创建和启动_实现Runnable接口方式
    02_线程的创建和启动_继承Thread方式
    01_基础知识
    07_XPath_02_常用语法
    二叉树分层遍历
    [LeetCode] Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/charlypage/p/10321574.html
Copyright © 2011-2022 走看看