gpt4 book ai didi

sql - PostgreSQL 9.1 主键自增

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

我正在尝试添加一个带有自动增量的主键。

我已经阅读了一些文档和其他问题 - 有 SERIALnextval() 语句,但它们都不起作用。

这是我做的:

CREATE TABLE IF NOT EXISTS "category" (
"id" integer SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
); // the error near "SERIAL"

CREATE SEQUENCE your_seq;
CREATE TABLE IF NOT EXISTS "category" (
"id" integer PRIMARY KEY nextval('your_seq'),
"name" varchar(30) DEFAULT NULL
); // the error near 'nextval'

我做错了什么?有没有办法将主键递增 1。

最佳答案

serial 或多或少是一种列类型,所以说 integer serial 就像说 text text,只是说 serial :

CREATE TABLE IF NOT EXISTS "category" (
"id" SERIAL PRIMARY KEY,
"name" varchar(30) DEFAULT NULL
);

如果您想自己创建序列,那么您希望将 id 的默认值设为序列中的下一个值,这意味着说 default nextval('your_seq'):

CREATE SEQUENCE your_seq;
CREATE TABLE IF NOT EXISTS "category" (
"id" integer PRIMARY KEY default nextval('your_seq'),
"name" varchar(30) DEFAULT NULL
);

要模拟通常的串行行为,您还需要使表拥有序列:

alter sequence your_seq owned by category.id;

阅读Serial Types手册的一部分可能会富有成效。


我还建议您除非万不得已,否则不要将表名和列名用双引号引起来。 PostgreSQL 会将您的标识符折叠为小写,因此 id"id" 将是同一件事,但不必要的引用是一个坏习惯,很容易导致引号困惑无处不在。

关于sql - PostgreSQL 9.1 主键自增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781111/

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