MySQL 中的 UPDATE 查询是否保证按显示的顺序执行字段更新?
例如
UPDATE `table` SET `first_to_update` = `second_field`,
`second_field` = `third_field`, `third_field` = 5
Run Code Online (Sandbox Code Playgroud)
MySQL 在对单个表执行更新时,错误地将更新视为“有序”,并按照它们在查询中写入的顺序更新列。
以下语句中的第二个赋值将 col2 设置为当前(更新后的) col1 值,而不是原始 col1 值。结果是 col1 和 col2 具有相同的值。此行为不同于标准 SQL。
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
单表 UPDATE 分配通常从左到右进行评估。对于多表更新,不能保证按任何特定顺序执行分配。
您的查询似乎是以这种行为不会导致问题的方式编写的。只要您不引用您“已经”更改的列的值(假设从左到右操作而不是原子操作),它就会按照您的预期进行。
归档时间: |
|
查看次数: |
1396 次 |
最近记录: |