如何在PostgreSQL中添加一个自动递增的主键到现有的表?
我有一个现有的数据表。 有没有办法添加主键而不删除和重新创build表?
( 更新 – 感谢评论的人 )
PostgreSQL的现代版本
假设你有一个名为test1的表,你想添加一个自动递增的主键id (代理)列。 在PostgreSQL的最新版本中,以下命令应该足够了: 
  ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY; 
旧版本的PostgreSQL
在PostgreSQL的旧版本(在8.x以前),你必须做所有的肮脏的工作。 下面的命令序列应该做的伎俩:
  ALTER TABLE test1 ADD COLUMN id INTEGER; CREATE SEQUENCE test_id_seq OWNED BY test1.id; ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq'); UPDATE test1 SET id = nextval('test_id_seq'); 
同样,在Postgres的最新版本中,这大致相当于上面的单个命令。
 ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY; 
这就是你需要的一切:
-  添加id列
- 用从1到count(*)的序列填充它。
- 将其设置为主键/不为空。
信用给@resnyanskiy谁给了这个答案的评论。