我有一个包含现有数据的表。有没有一种方法可以在不删除和重新创建表的情况下添加主键
(更新-感谢发表评论的人)
PostgreSQL的现代版本
假设您有一个名为test1的表,您想在其中添加一个自动递增的主键id(代理)列。在最新版本的PostgreSQL中,以下命令应足够:
更改表test1添加列id序列主键;
PostgreSQL的旧版本
在旧版本的PostgreSQL(8.x之前?)中,您必须完成所有的脏活。下面的命令序列应该可以做到这一点:
更改表test1添加列id整数;
创建test1.id拥有的序列test_id_seq;
ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq');
更新test1 SET id=nextval('test_id_seq');
同样,在最新版本的Postgres中,这大致相当于上面的单个命令