有没有办法在不删除表的情况下将现有的主键类型从int更改为serial?表中已经有很多数据,并且我不想删除它。
将int或多或少地转换为序列仅意味着将序列默认值添加到value,从而使其成为序列;
为序列选择一个起始值,大于表中的任何现有值
SELECT MAX(id)+1 FROM mytable
为序列创建一个序列(tablename_columnname_seq是一个好名字)
CREATE SEQUENCE test_id_seq MINVALUE 3
(假设您想从3开始)
更改列的默认值以使用序列
ALTER TABLE test ALTER id SET DEFAULT nextval('test_id_seq')
更改表/列拥有的顺序;
ALTER SEQUENCE test_id_seq OWNED BY test.id
和往常一样,养成运行完整备份的习惯,然后再运行Internet上来自随机人员的SQL查询更改;-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句