【发布时间】:2015-10-12 12:25:21
【问题描述】:
我有一个看似基本的问题,但我一直找不到答案。 MySQL 中的 NEW 关键字是指执行给定操作后行的外观还是仅指查询中使用的实际值?例如:
假设我有一个表示例,其中包含 A int(6)、B varchar(10) 和 C varchar(10) 列。该表有一行(1,“hello”,“world”)。如果我再执行更新:
UPDATE TABLE sample
SET C = "bob"
WHERE A = 1;
如果我有更新后触发器,我希望 NEW.C 的值为“bob”,但 NEW.B 的值为“hello”还是 null?
【问题讨论】:
-
没有。
NEW指的是随查询传入的数据(您在VALUES中为INSERT或SET为UPDATE指定的数据,将未指定的值保留在当前状态)。另一方面,OLD指的是当前记录状态(修改前) -
好的,谢谢。如果我要从另一个表更新一个表,并且如果触发器是在插入或更新之后,我什至还需要 NEW 或 OLD 关键字吗?我可以这样做:
UPDATE sample2 u join sample s on u.A = s.A SET u.B = s.B WHERE u.A = s.A;@AlmaDo