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;

  • 相关阅读:
    c++ this *this
    名称空间
    c++ 静态持续变量
    c++ 数组
    c++ 头文件
    实例化和具体化详解
    在linux下安装eclipse以及运行c++程序的安装步骤
    在centos (linux) 搭建 eclipse c++开发分环境
    Linux上使用Qt Creator进行C/C++开发
    使用Qt Creator 2.60编写C/C++程序
  • 原文地址:https://www.cnblogs.com/songxuan/p/9486760.html
Copyright © 2011-2022 走看看