• 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 
    
    
    
  • 相关阅读:
    P4839 P哥的桶 题解(线段树维护线性基)
    线性基入门
    Lowest Common Ancestor 题解(lca+思维)
    B
    java string对象的简单方法
    AtCoder Grand Contest 016 D
    FFT
    回文自动机(BZOJ2565)
    二维RMQ
    AC自动机(BZOJ1030)
  • 原文地址:https://www.cnblogs.com/charlypage/p/10321574.html
Copyright © 2020-2023  润新知