2017-05-06 73 views
0

相同的价值观,我需要更新表看起来像这样:更新错误 - 的主键

enter image description here

主键是复合 - id_planupor_cislo

当添加新行例如id_planu = '8' AND por_cislo = '5',我需要增加其por_cislo > 5的所有行像por_cislo = por_cislo+1

有一个问题,因为当我这样做:

UPDATE table SET por_cislo = por_cislo+1 WHERE id_planu = '8' AND por_cislo > '5' 

中设定的por_cislo = '7'值,其中它是'6'。因此,有两行的主键值相同(8,7),这是我收到错误的原因。

我该怎么做才是正确的方法?

+0

修改主键听起来不像是个好主意。你不想重新使用一把钥匙来拍摄另一张唱片,然后把所有东西都放在一起。只需用新密钥生成新记录,不要重复使用旧密钥。 – Glenn

回答

0

所有你需要的是增加ORDER BY条款像以下: UPDATE table SET por_cislo = por_cislo+1 WHERE id_planu = '8' AND por_cislo > '5' ORDER BY por_cislo DESC