微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;

原文地址:https://www.jb51.cc/postgresql/193673.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐