想建立一个触发器,当有更新为d_lastUpdate=null时(d_lastUpdate为这条记录的更新时间,就是这条记录当前没有更新),触发器把b_hostState设置为0
触发器代码如下:
delimiter |
create trigger manager_bu before update on manager for each row
begin
if new.d_lastUpdate=null then
set new.b_hostState=0;
end if ;
end;|
delimiter ;
问题是当update manager set d_lastUpdate=null where v_studentName like '汪%';
d_lastUpdate变为null,b_hostState不会变成0(原来是1状态)
由于只有一个表不能使用after update,如果现在想实现这个功能怎么修改啊,急~~~~~~~~~~`
触发器代码如下:
delimiter |
create trigger manager_bu before update on manager for each row
begin
if new.d_lastUpdate=null then
set new.b_hostState=0;
end if ;
end;|
delimiter ;
问题是当update manager set d_lastUpdate=null where v_studentName like '汪%';
d_lastUpdate变为null,b_hostState不会变成0(原来是1状态)
由于只有一个表不能使用after update,如果现在想实现这个功能怎么修改啊,急~~~~~~~~~~`
if new.d_lastUpdate is null
http://topic.csdn.net/u/20091020/22/c51bb709-6dbc-4fd1-b874-077714ed547e.html
参考一下这个贴子中的三种方法。
delimiter |
create event myevent on schedule every 5 second
starts current_timestamp
ends current_timestamp+interval 50 second
do
update manager set b_hostState=0 where now()-d_lastUpdate>5 minutes;|
delimiter ;
产生一个错误:ERROR 1064 (42000): 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 'minues' at line 5
starts current_timestamp
do
update manager set b_hostState=0 where now()-interval 5 minute > d_lastUpdate;1. 由于你这仅是一句,不需要 delimiter 了。
2. 你好象是想每5分钟执行一次,改成 every 5 minute
3. 如果不需要结束,则不需要写 ends
4. 你的日期计算和判断改为 now()-interval 5 minute > d_lastUpdate