查询中的SQL引用当前记录(“this”)

时间:2010-11-18 20:33:36

标签: mysql

我有一张表:

id | NODE_ID | last_updated
1  |  4      | 11-29-2010 ... 

使用“on update CURRENT_TIMESTAMP”

将last_updated列设置为在对行进行任何更改后更新

我需要更新NODE_ID为4到5的所有记录,但我想保持时间戳不变。

我正在考虑更新并引用查询中当前选定的行来手动设置时间戳...令人困惑......就像这样

更新作业设置NODE_ID = 4,last_updated = this.last_updated,其中NODE_ID = 5;

我可以使用什么来替换查询中的“this”?如果我不能,那么最好的办法是做什么呢?

〜肖恩

PS。 mysql Ver 14.12 Distrib 5.0.86,redhat-linux-gnu(i686)使用readline 5.1

2 个答案:

答案 0 :(得分:2)

这应该这样做:

update jobs set NODE_ID=4, last_updated = last_updated where NODE_ID = 5;

ETA:最初我认为这不会起作用,因为我认为在设置值之后会执行on update约束,删除你的“更改”(或缺少它)。但this让我相信事实并非如此。

答案 1 :(得分:1)

如果这是一次性更新,您可以在运行前删除约束,然后在完成后添加约束。见here。 我不认为你想做什么会起作用,因为在评估查询后,Mysql可能会触及时间戳。