触发器在数据库系统开发过程中具有非常重要的作用,例如可以防止有害数据录入数据库,可以改变或取消Insert、Update和Delete语句的执行及在一个会话中监听数据库中的数据的改变。
MySQL数据库创建触发器的格式如下:
create trigger <触发器名称>
{ before | after}
{insert | update | delete}
on <表名>
for each row
<触发器SQL语句>
创建一个数据表:
drop table if exists Students;
create table Students(
ID varchar(8),
Name varchar(20),
Grade int
);
创建触发器,实现无论用户向Students表插入什么数据,都将字段Grade的内容设置为1,触发器代码如下:
drop trigger if exists set_default_grade;
DELIMITER |
create trigger set_default_grade
before insert on Students
for each row
set new.Grade=1
|
DELIMITER ;
向Students表添加一条记录,并查看添加后的结果:
insert into Students values('08000102', 'LiaoJL', 0);
select * from Students;
下面是一个带游标的触发器例子:
drop trigger get_critical_ticket;
DELIMITER |
create trigger get_critical_ticket
after insert on Tickets
for each row begin
DECLARE priority INT;
declare queue varchar(50);
DECLARE cur_1 CURSOR FOR SELECT T.ID, T.Priority, Q.Name, T.CTime
FROM Tickets T,Queues Q
WHERE T.QueueID=Q.Id
and T.CreatedTimeStamp > SUBDATE(NOW(), INTERVAL 20 MINUTE)
and T.InitialPriority >= 4;
set priority = 4;
set queue = 'test';
OPEN cur_1;
FETCH cur_1 INTO a,b,c,d;
end
|
DELIMITER ;
Comments
There are currently no comments
New Comment