MySQL中如何定义trigger?

[复制链接]
查看11 | 回复3 | 2009-3-31 22:36:33 | 显示全部楼层 |阅读模式
书上看到是
create trigger [tr] 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'。。。

回复

使用道具 举报

千问 | 2009-3-31 22:36:33 | 显示全部楼层
对的,MYSQL不用referencing,百度可以搜索MYSQL5中文手册呀,说得非常非常清楚,我粘贴到下面:21.1. CREATE TRIGGER语法CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。触发程序与命名为tbl_name的表相关。tbl_name必须引用永久性表。不能将触发程序与TEMPORARY表或视图关联起来。trigger_time是触发程序的动作时间。它可以是BEFORE或A...
回复

使用道具 举报

千问 | 2009-3-31 22:36:33 | 显示全部楼层
触发器(trigger)是指隐含执行的存储过程procedure,当定义触发器时必须要指定触发事件和触发的操作,通常触发事件包括insert,update,delete语句,触发器实际上就是一个pl/sql(procedure language/Structured Query Language).create trigger来创建触发器; 作用;a...
回复

使用道具 举报

千问 | 2009-3-31 22:36:33 | 显示全部楼层
重新定义结束符就可以了delimiter $create trigger student_update before update on studentfor each rowif new.student_birth='0-0-0' then set new.student_birth=null;end if$delimiter ;...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行