gpt4 book ai didi

postgresql - 将 'serial' 添加到 Postgres 中的现有列

转载 作者:行者123 更新时间:2023-11-29 11:05:00 25 4
gpt4 key购买 nike

我的 Postgres 9.0 数据库中有一个小表(约 30 行),其中有一个整数 ID 字段(主键),该字段当前包含从 1 开始的唯一连续整数,但不是使用“serial”关键字创建的。

我如何更改此表,以便从现在开始对该表的插入将导致此字段的行为就好像它是使用“serial”作为类型创建的一样?

最佳答案

查看以下命令(尤其是注释 block )。

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;

关于postgresql - 将 'serial' 添加到 Postgres 中的现有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com