MySQL触发器基本操作
编辑时间:2019-03-09 14:56:25 作者:666666

触发器概念

触发器是一种特殊类型的存储过程,在插入,删除和修改表中数据时被触发执行。

触发时机

Before和After两种

触发条件

Insert ,delete , update

总结:所以在一个表上最多可以建立6个触发器,即:
1. before insert型(插入数据之前触发) 
2. before update型(更新数据之前) 
3. before delete型
4. after insert 型 
5. after update型 
6. after delete型。

并且不能在同一个表中建立两个类型完全相同的触发器。

触发器语法

    create  trigger 触发器名称

    after/before insert/update/delete on 表名

    for each row

    begin

        sql语句

    end

在触发器中引用行值

    触发事件   引用对象    表示方法         

    insert    新增的行    new.列名        
    delete    删除的行    old.列名
    update    更新前的行   old.列名
    update    更新后的行   new.列名

触发器例子

  1. 插入触发器例子

例子说明: 因为每位员工入职后都应该有对应的薪资,所以适合使用触发器来完成

//员工表建表语句

CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(150) NOT NULL,
    `pass` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

//薪水表

CREATE TABLE `saraly` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `uid` int(10) unsigned NOT NULL,
    `saraly` decimal(18,2) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

//建立触发器

mysql> \d $
mysql> create trigger user_add_saraly after insert 
    -> on user for each row
    -> begin
    ->    insert into saraly(uid,saraly) values(new.id,50000);
    -> end
    -> $

//当给user表插入一条的数据时,saraly表也会多一条数据

mysql> insert into user(name,pass) values('rest',md5('234111'));

例子2: 员工离职后,需要删除员工信息与薪资信息。这个时候就可以使用到触发器

mysql> \d $
mysql> create trigger user_del_saraly after delete 
    -> on user for each row
    -> begin
    ->    delete from saraly where uid = old.id;
    -> end
    -> $

//当删除user表数据,saraly表数据也会删除 mysql> delte from user where id = 6;

触发器管理

  • 删除触发器

    不再需要的触发器必须删除,否则触发器可能会在符合条件时被执行。

    drop trigger 触发器名字

  • 查看所有触发器

    show trigger

 点赞 0
 收藏 0
 分享
来说两句吧
最新评论
    暂无评论
天气预报
万年历
2015年
7月
返回今天

博客声明

本博客属个人所有,不涉及商业目的。遵守中华人民共和国法律法规、中华民族基本道德和基本网络道德规范,尊重有节制的言论自由和意识形态自由,反对激进、破坏、低俗、广告、投机等不负责任的言行。所有转载的文撰写页面章、图片仅用于说明性目的,被要求或认为适当时,将标注署名与来源。避免转载有明确“不予转载”声明的作品。若不愿某一作品被转用,请及时通知本人。对于无版权或自由版权作品,本博客有权进行修改和传播,一旦涉及实质性修改,本博客将对修改后的作品享有相当的版权。二次转载者请再次确认原作者所给予的权力范围。

本博客所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。非经允许,不得用于赢利目的。本博客受中国知识产权、互联网法规和知识共享条例保护和保障,任何人不得进行旨在破坏或牟取私利的行为。本博客声明以简体中文版为准,不对其他语言版本负责。

如有侵权请及时联系我进行处理。邮箱youseeim666@163.com