如何在PostgreSQL中向现有表添加自动递增主键?

我有一个包含现有数据的表。有没有一种方法可以在不删除和重新创建表的情况下添加主键

更新-感谢发表评论的人)

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中,这大致相当于上面的单个命令

发表评论