弃用SERIAL改用IDENTITY字段时,是否需将其设为数据库主键?
关于IDENTITY字段是否需要设为主键的问题解答
IDENTITY字段本身不强制要求设为主键,但结合你提到的「需要唯一性+创建索引」的需求,把它设为主键是最省心也最合理的选择,原因如下:
- 主键约束自带唯一性校验,刚好满足你对字段唯一性的要求,不用额外再单独创建UNIQUE约束
- 主键会自动生成一个唯一B-tree索引,直接解决了索引需求,省得手动去建
- 主键是表的唯一行标识,用自增的IDENTITY字段做主键,完全契合大多数业务场景里唯一标记数据行的需求
你给出的示例代码是完全正确的写法:
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
当然如果有特殊场景不想把它设为主键,那必须手动给这个IDENTITY字段加UNIQUE约束,同时创建索引——否则既保证不了唯一性,查询效率也会打折扣,但这种情况非常少见。
内容的提问来源于stack exchange,提问作者newexe91
相关产品推荐
相关产品推荐

