就像话题所说的那样。
truncate table "Account" restart identity cascade;
insert into "Account" ("name", "enabled") values ("test", 1);
select * from "Account";
输出:
accountId | name | enabled
-----------+------+---------
14 | test | 1
(1 row)
这是表的架构:
Table "public.Account"
Column | Type | Modifiers
-----------+------------------------+---------------------------------------------------------------
accountId | integer | not null default nextval('"Account_accountId_seq"'::regclass)
name | character varying(255) | not null
enabled | integer | not null
Indexes:
"Account_pkey" PRIMARY KEY, btree ("accountId")
Referenced by:
TABLE ""AccountPropertyAccess"" CONSTRAINT "AccountPropertyAccess_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("accountId")
TABLE ""User"" CONSTRAINT "User_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("accountId")
这里有一些额外的词,因为堆栈交换认为我没有足够的单词,因为我有太多的代码。
答案 0 :(得分:4)
您似乎没有将列创建为serial
列,因此Postgres不知道序列"属于"到列,因此"重新启动身份"不会重置序列。
您可以通过使用serial
而不是integer
重新创建表格以及默认值来解决此问题。
或者你可以告诉Postgres列"拥有"顺序:
alter sequence "Account_accountId_seq" owned by "Account"."accountId";
顺便说一句:使用带引号的标识符通常比它的价值要麻烦得多(根据我的经验)。大多数情况下,最好不要使用带引号的标识符,例如create table Account (...)
代替create table "Account" (...)
答案 1 :(得分:2)