MySQL编程之三:触发器

(0 comments)

触发器在数据库系统开发过程中具有非常重要的作用,例如可以防止有害数据录入数据库,可以改变或取消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 ;
Currently unrated

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required