我想修改表中所有行的主键integer
。我的目标是从pk
中减去特定数字,然后重置它。
这可能吗?伪代码:
update mytable set id = id-100;
答案 0 :(得分:3)
这是可能的,但这绝不是一个好主意。主键只用于一个目的,唯一地标识一行;一旦您尝试将其用于其他目的,例如作为用户可见的序列号,那么您将遇到问题。在使用包含业务信息的复合键的系统中,当事实证明需要更改业务信息时,总会有令人讨厌的代码来更改关键信息,使用人工密钥的一个重要部分是消除对这种类型的需求。容易出错的数据变通。对用户可见的序列号使用单独的列,不要将此问题与唯一标识行的问题混合在一起。
答案 1 :(得分:0)
好的,我发现了我的错误:该号码必须用单引号括起来:
update mytable set id = id - '100' ;