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);为了模拟通常的
serial行为,您还需要使表拥有该序列:
alter sequence your_seq owned by category.id;
阅读手册的“串行类型”部分可能会很有成果。
我还建议您不要对表名和列名加双引号,除非必须这样做。PostgreSQL将折叠的标识符以小写因此
id而
"id"将是相同的事情,但不必要的报价是一个坏习惯,很容易导致行情的大混乱无处不在。



