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;

  • 相关阅读:
    面向领域的微服务架构
    java常用工具类
    java字节码解析
    详解 Java 内部类
    MongoDB配置教程
    oracle18c相关
    VBS编辑文件夹下所有excel文档
    oracle新增主键
    sqlldr加载字符问题
    ora-00257
  • 原文地址:https://www.cnblogs.com/songxuan/p/9486760.html
Copyright © 2011-2022 走看看