postgresql – 在Postgres中向现有列添加“serial”
发布时间:2020-12-13 16:50:17 所属栏目:百科 来源:网络整理
导读:我有一个小表(约30行)在我的Postgres 9.0数据库与一个整数ID字段(主键)当前包含从1开始,但不是使用’serial’关键字创建的唯一顺序整数。 我如何改变这个表,从现在开始插入到这个表将导致这个字段的行为好像它是用’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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |