mysql触发器的问题 mysql触发器如何判断update某个表中具体指定的某个值发生变化时,触发方法。比如 当 article表中某条记录的size值发生变化时,才触发,当触发其他该记录的其他字段里的值时不触发?如何写?线上等求大侠帮忙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个只能在触发器内部判断,如果size未变,直接跳出,不处理。注册触发器的时候,只能注册针对某张表的INSERT/UPDATE/DELETE操作时触发。 http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html先看一下吧。Oracle之类的触发器都是一个道理,触发器主要有两个参数old,new,代表变化涉及到的某条记录的前后记录状态。注册触发器到某张表的某个/某些操作(INSERT/UPDATE/DELETE),并且能指定在操作实施前还是实施以后BEFORE/AFTER你的代码,就是根据判断变化前后的数据,决定是否要根据这次变化,对数据库的其他数据进行维护。比如,a_history这张表是a表的履历表,你就需要注册AFTER INSERT、AFTER UPDATE的时候,将new的记录copy到a_history又比如,client是客户信息表,里面有个字段是对应的销售人员,某个触发器就是判断如果当前的sales变化了,就对client_sales_relation这张表进行维护,修改之前的sales的结束时间为当前时间,新增一条记录,记录当前sales的开始时间。当然,上面举的触发器例子,也都可以通过在程序内部写代码来实现。 没有办法直接得到哪个字段被列在UPDATE语句中了。 你只能自己进行判断。 if new.col=old.col then .... Idafang (Idafang) '截至2011-09-14 15:38:36 用户结帖率0.00% 当您的问题得到解答后请及时结贴.http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.htmlhttp://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.htmlhttp://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?http://community.csdn.net/Help/HelpCenter.htm#结帖 DROP TRIGGER t1.tr1;CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROWbeginif NEW.CreatedDate>now() then SET NEW.CreatedDate = IFNULL(NEW.CreatedDate, NOW()), NEW.LastModifiedDate = IFNULL(NEW.LastModifiedDate, NOW());end ifend; 数据表的查询转换? mysql 日期类型问题 win7家庭版能装mysql吗? mysql 触发器中new和old有啥区别? mysql 备份不了存储过程 mysqldump -u 用户名 -p 数据库 > filename.sql TADODataSet的UpdateBatch保存数据到PostgreSQL出错 请教关于多表连接查询的性能问题 如何释放mysql的连接? 安装postgresql,help~~~~~~ select查询问题 去重复值sql语句怎么写 刚开始用mysql,问几个很简单的问题。
先看一下吧。Oracle之类的触发器都是一个道理,
触发器主要有两个参数old,new,代表变化涉及到的某条记录的前后记录状态。
注册触发器到某张表的某个/某些操作(INSERT/UPDATE/DELETE),并且能指定在操作实施前还是实施以后BEFORE/AFTER
你的代码,就是根据判断变化前后的数据,决定是否要根据这次变化,对数据库的其他数据进行维护。比如,a_history这张表是a表的履历表,你就需要注册AFTER INSERT、AFTER UPDATE的时候,将new的记录copy到a_history又比如,client是客户信息表,里面有个字段是对应的销售人员,某个触发器就是判断如果当前的sales变化了,就对client_sales_relation这张表进行维护,修改之前的sales的结束时间为当前时间,新增一条记录,记录当前sales的开始时间。当然,上面举的触发器例子,也都可以通过在程序内部写代码来实现。
if new.col=old.col then ....
'截至2011-09-14 15:38:36 用户结帖率0.00%
当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖
DROP TRIGGER t1.tr1;
CREATE TRIGGER tr1 BEFORE INSERT
ON t1 FOR EACH ROW
begin
if NEW.CreatedDate>now() then
SET NEW.CreatedDate = IFNULL(NEW.CreatedDate, NOW()),
NEW.LastModifiedDate = IFNULL(NEW.LastModifiedDate, NOW());
end if
end;