如何修改PostgreSQL表列关联PK序列,解决插入空值报错问题
解决PostgreSQL生产库id列未关联序列导致的非空约束错误
你的问题出在ALTER语句的语法上——不需要重复声明列的类型和非空约束(这些生产库已经存在了),只需要给id列添加默认值关联序列即可。
正确的修改语句:
ALTER TABLE PaperTrailDocumentControlSetting ALTER COLUMN id SET DEFAULT nextval('papertraildocumentcontrolsetting_id_seq'::regclass);
如果生产库中还没有papertraildocumentcontrolsetting_id_seq这个序列,得先创建它:
CREATE SEQUENCE papertraildocumentcontrolsetting_id_seq;
为了让序列和id列绑定(确保序列的生命周期和表一致,删除表时序列也会被删除),可以额外执行:
ALTER SEQUENCE papertraildocumentcontrolsetting_id_seq OWNED BY PaperTrailDocumentControlSetting.id;
执行完这些语句后,生产库的id列就和本地库的定义一致了,插入数据时会自动从序列获取id值,不会再触发非空约束错误。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

