如何修改主键的值?

时间:2015-12-17 16:19:02

标签: sql postgresql

我想修改表中所有行的主键integer。我的目标是从pk中减去特定数字,然后重置它。

这可能吗?伪代码: update mytable set id = id-100;

2 个答案:

答案 0 :(得分:3)

这是可能的,但这绝不是一个好主意。主键只用于一个目的,唯一地标识一行;一旦您尝试将其用于其他目的,例如作为用户可见的序列号,那么您将遇到问题。在使用包含业务信息的复合键的系统中,当事实证明需要更改业务信息时,总会有令人讨厌的代码来更改关键信息,使用人工密钥的一个重要部分是消除对这种类型的需求。容易出错的数据变通。对用户可见的序列号使用单独的列,不要将此问题与唯一标识行的问题混合在一起。

答案 1 :(得分:0)

好的,我发现了我的错误:该号码必须用单引号括起来:

update mytable set id = id - '100' ;