我有一个小表(约30行)在我的Postgres 9.0数据库与一个整数ID字段(主键)当前包含从1开始,但不是使用’serial’关键字创建的唯一顺序整数。
我如何改变这个表,从现在开始插入到这个表将导致这个字段的行为好像它是用’serial’作为一个类型创建的?
看看下面的命令(特别是注释的块)。
原文链接:https://www.f2er.com/postgresql/193673.htmlDROP 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;