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

    触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。

    1,创建一张用户表,插入测试数据

    CREATE TABLE `user` ( 
    `id` int(11) NOT NULL auto_increment COMMENT '用户ID', 
    `name` varchar(50) NOT NULL default '' COMMENT '名称', 
    `sex` int(1) NOT NULL default '0' COMMENT '0为男,1为女', 
    PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
    
    INSERT INTO `user` (`id`, `name`, `sex`) VALUES 
    (1, '老王', 0), 
    (2, '小猪', 0); 
    2,创建评论表,插入测试数据
    CREATE TABLE `comment` ( 
    `id` int(11) NOT NULL auto_increment COMMENT '评论ID', 
    `u_id` int(11) NOT NULL COMMENT '用户ID', 
    `name` varchar(50) NOT NULL default '' COMMENT '用户名称', 
    `content` varchar(1000) NOT NULL default '' COMMENT '评论内容', 
    PRIMARY KEY  (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; 
     
    INSERT INTO `comment` (`id`, `u_id`, `name`, `content`) VALUES 
    (1, 1, '小猪', '触发器测试'), 
    (2, 1, '小猪', '解决字段冗余'), 
    (3, 2, '老王', '使代码更简单'); 

    3,创建更新name的触发器

    create trigger updatename after update on user for each row               //建立触发器, 
    begin 
       if new.name!=old.name then                                           //old,new都是代表当前操作的记录行,你把它当成表名当表中用户名称发生变化时,执行 
       update comment set comment.name=new.name where comment.u_id=old.id;
    end if;
    end;
    updatename:触发器的名称  after:触发的时机   user:所建触发器的表  

    4,测试触发器

    update user set name='张三'  where id = 1;

    查看表的触发器

    SHOW TRIGGERS;

    删除触发器
    drop trigger deletecomment;

  • 相关阅读:
    Jmeter实现dubbo接口压测案例
    Jmeter性能测试报告扩展
    Jmeter3.2源码编译环境搭建
    JMeter中添加dubbo相关插件异常问题解决
    JMeter3.0启动日志报错WARN
    JMeter关联的几种方式总结案例
    JMeter调试参数是否取值正确,调试正则提取的结果(log.info|log.error|print)
    jdk1.7更新visualvm插件
    如何自定义 maven中的archetype
    java提高篇(四)-----理解java的三大特性之多态
  • 原文地址:https://www.cnblogs.com/songxuan/p/9486760.html
Copyright © 2011-2022 走看看