需求:起初,创建了一个test的数据表,以name作为主键。后来发现不能满足需求,就要添加一个自增类型的字段(serial)id,并把它作为主键
问题:需要重新插入数据,从而让 id 有值吗 ? 如果数据表里数据量非常大,工作量可想而知
解决问题:postgreSQL 系统本身解决了这个问题。当在数据表中新添加了一个SERIAL类型的列后,SERIAL的自增功能会被自动添加到数据库
更改主键的两条sql语句:
删除原来:alter table test drop constraint test_pkey;
constraint 后面的参数可以通过:\d test ;查看
name |character varying(1024) | not null
addr |character varying(1024) |
id |integer | not nulldefault nextval('test_id_seq'::regclass)
Indexes:
"test_pkey" PRIMARY KEY, btree (name)
添加新主键:alter table test add primary key (id) ;