我的桌子上有一个主键" 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
答案 0 :(得分:0)
根据我的经验,mysql将在更新期间检查唯一约束,并且在单个更新命令中不允许任何重复甚至多行更新。您可以查看任何虚拟表格。