有了下面的 mysql 进程,如果我保持下面的顺序(给定依赖关系(,是否可以合理地说 mysql 总是先更新然后更新第二列。 还是建议我编写 2 个单独的更新查询,一个用于第一列,一个用于第二列?
CREATE TABLE a (first INT, second INT);
INSERT INTO a VALUES (1,1);
UPDATE a SET first = 2, second = first * 2;
它是顺序的。因此,首先更新为 2,然后第二次更新为第一个 * 2 = 4。
如果更新后的数据为 1, 1,则为:
CREATE TABLE a (first INT, second INT);
INSERT INTO a VALUES (1,1);
UPDATE a SET first = 2, second = first * 2;
select * from a;
+-------+--------+
| first | second |
+-------+--------+
| 2 | 4 |
+-------+--------+
如果这样做:
truncate table a;
INSERT INTO a VALUES (1,1);
UPDATE a SET second = first * 2, first = 2;
你会得到
select * from a;
+-------+--------+
| first | second |
+-------+--------+
| 2 | 2 |
+-------+--------+
因此,如果要更新第二个字段(依赖于依赖字段(,请将第二个字段的顺序更改为位于依赖字段之前。