订购重要的更新mysql查询

时间:2014-04-24 11:25:23

标签: mysql sql

我的桌子上有一个主键" P"和一个唯一的键" U",假设" U"没有值为35的行,并且由于业务规则,我需要更新所有" U" > 35到 " U" - 1。

我的问题是:如果我这样做而不关心更新的顺序,在更新期间,两行可能具有相同的值" U"。

这是一个问题吗?

我的意思是MySQL在更新结束时或更新期间检查唯一约束?
如果此更新失败,我可以通过以下方式执行此操作:

UPDATE `Table` `y`
INNER JOIN (
SELECT * FROM `Table` WHERE `U` > 35 ORDER BY `U`) AS `x`
ON `x`.`P` = `y`.`P`
SET `y`.`U` = `y`.`U` - 1
WHERE 1

1 个答案:

答案 0 :(得分:0)

根据我的经验,mysql将在更新期间检查唯一约束,并且在单个更新命令中不允许任何重复甚至多行更新。您可以查看任何虚拟表格。