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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/postgresql/193673.html

猜你在找的Postgre SQL相关文章