MySQL中如何定义trigger?

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:27:35
书上看到是
create trigger <trigger_name> before update on r
referencing new row as nrow
for each row
....

但是总是出错,而且貌似MySQL5.0中没有referencing保留字。。
求问怎么定义trigger?
create trigger student_update before update on student
for each row
if new.student_birth='0-0-0' then set new.student_birth=null end if;

错误信息You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.student_birth=null' at line 3

应该怎么改?

按照2L的说法可以定义了,但是没有反应啊。。。改的'0-0-0'结果还是'0-0-0'。。。

触发器(trigger)是指隐含执行的存储过程procedure,当定义触发器时必须要指定触发事件和触发的操作,通常触发事件包括insert,update,delete语句,触发器实际上就是一个pl/sql(procedure language/Structured Query Language).create trigger来创建触发器;
作用;
a.允许/限制对表的修改
b.自动派生列,如自增字段
c.强制数据的一致性
d.提供审计和日志记录
e.防止无效的事务处理
f.启动复杂的业务逻辑
insert into employee values(emp_seq.nextval,'Janney',10,'1');
---插入一条数据
update employee set employee.empname='Alex' where employee.empid='12';
--根新empid=15的数据.

重新定义结束符就可以了
delimiter $
create trigger student_update before update on student
for each row
if new.student_birth='0-0-0' then set new.student_birth=null;
end if$
delimiter ;

对的,MYSQL不用referencing,百度可以搜索MYSQL5中文手册呀,说得非常非常清楚,我粘贴到下面:

21.1. CREATE TRIGGER语法

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。

触发程序与命名为tb