1、创建触发器

(1) 创建一个表alvin

create table alvin(

useridint(10),

usernamevarchar(20),

oldint(4),

address varchar(30));


(2) 创建一个表为trigger_time 用来存放触发后条件的结果

create table trigger_time(

zhixing_time time);

Query OK, 0 rows affected (0.15 sec)


(3)、创建只有单个执行语句的触发器

create trigger alvin1 before insert

on alvin for each row

insert into trigger_time values(now());

Query OK, 0 rows affected (0.07 sec)





(4)、创建有多个执行语句的触发器


举例一、

root@zytest 10:49>delimiter &&#告诉MYSQL该命令段下面的内容在提示结束后再执行分析。默认是以分号(;)执行

root@zytest 10:53>create trigger alvin3 after delete

->on alvin for each row

->begin

->insert into trigger_time values('21:01:01');

->insert into trigger_time values('22:01:01');

->end

->&&

Query OK, 0 rows affected (0.05 sec)

root@zytest 10:54>delimiter; #结束退出,注意分号要有空格


root@zytest 10:57>select * from alvin;

+--------+-------------+------+----------+

| userid | username| old| address|

+--------+-------------+------+----------+

|110 | zengxiaohua |28 | tianxing |

+--------+-------------+------+----------+

1 row in set (0.00 sec)


root@zytest 11:07>delete from alvin where userid='110';#执行删除动作看看触发器是否成功

Query OK, 1 row affected (0.05 sec)


root@zytest 11:07>select * from trigger_time;#:查看触发器的执行结果

+--------------+

| zhixing_time |

+--------------+

| 19:09:41|

| 21:01:01 |

| 22:01:01 |

+--------------+

3 rows in set (0.00 sec)


举例二、

alvin1表存放了学生的信息。每次增加(insert)一个学生的信息。就触发一次统计。统计结果存入aac表里面;

首先创建一个alvin1表结构

create table alvin1(

user_id int(10),

username varchar(20),

old tinyint(4),

address varchar(30));


create table aac(

my_count int);

然后开始创建一个触发器

delimiter &&

create trigger alvin123 before insert on

alvin1 for each row begin

declare ycount int(10);#:申明变量类型

set ycount=(select count(*) from alvin1);#:给变量赋值

insert into aac(my_count) values(ycount);#:调用变量

end &&

delimiter ;


root@zytest 16:24>insert into alvin1 values('1001','zhangsan','18','China');开始测试

root@zytest 16:24>select * from aac;查看触发器统计的结果。



2、查看触发器

(1) 查看所有触发器,提前要进入某库

#: show triggers \G;


(1)triggers表中查看触发信息

(2)root@zytest 11:20>use information_schema;

root@zytest 11:19>select * from information_schema.triggers \G;

小技巧:所有触发器的信息都存在information_schema库中的triggers表里面,

在使用select 查询单个触发器的时候。可以根据triggers表里面的字段名称

Trigger_name字段进行查询。

root@information_schema 11:24>select * from triggers where trigger_name='alvin1'\G;


3、删除触发器

语法:



(1)、删除alvin1触发器

root@(none) 12:18>use zytest;

Database changed

root@zytest 12:18>drop trigger alvin1;

Query OK, 0 rows affected (0.03 sec)