postgresql – 在Postgres中向现有列添加“serial”

我有一个小表(约30行)在我的Postgres 9.0数据库一个整数ID字段(主键)当前包含从1开始,但不是使用’serial’关键字创建的唯一顺序整数。

我如何改变这个表,从现在开始插入到这个表将导致这个字段的行为好像它是用’serial’作为一个类型创建的?

看看下面的命令(特别是注释的块)。
DROP TABLE foo;
DROP TABLE bar;

CREATE TABLE foo (a int,b text);
CREATE TABLE bar (a serial,b text);

INSERT INTO foo (a,b) SELECT i,'foo ' || i::text FROM generate_series(1,5) i;
INSERT INTO bar (b) SELECT 'bar ' || i::text FROM generate_series(1,5) i;

-- blocks of commands to turn foo into bar
CREATE SEQUENCE foo_a_seq;
ALTER TABLE foo ALTER COLUMN a SET DEFAULT nextval('foo_a_seq');
ALTER TABLE foo ALTER COLUMN a SET NOT NULL;
ALTER SEQUENCE foo_a_seq OWNED BY foo.a;    -- 8.2 or later

SELECT MAX(a) FROM foo;
SELECT setval('foo_a_seq',5);  -- replace 5 by SELECT MAX result

INSERT INTO foo (b) VALUES('teste');
INSERT INTO bar (b) VALUES('teste');

SELECT * FROM foo;
SELECT * FROM bar;

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...