0

SERIAL PRIMARY KEY当我使用Sqitch 迁移创建表时,我想以1. 但是,由于某种原因,该ALTER SEQUENCE命令似乎没有任何效果。

我的部署迁移看起来像这样:

BEGIN;

  CREATE TABLE "user" (
    "id" SERIAL PRIMARY KEY,

    ... more columns ...
  );

  ALTER SEQUENCE "user_id_seq" RESTART WITH 12345;

COMMIT;

当上述迁移成功运行时,id我插入user表中的第一行的列具有 value 1

但是,如果我ALTER SEQUENCE "user_id_seq" RESTART WITH 12345;手动执行该语句(在迁移运行之后),我插入的下一行,该id列的值为12345

我试图将ALTER SEQUENCE...声明移到它自己的迁移中,但这似乎没有任何积极影响。

如何ALTER SEQUENCE...在 Sqitch 迁移中成功执行语句?

4

1 回答 1

0

你试过这个:

SELECT setval("user_id_seq", 12345, false);

https://www.postgresql.org/docs/current/functions-sequence.html

更新:

那这个呢?刚刚测试它工作正常

BEGIN;

CREATE SEQUENCE user_id_seq START 12345;

CREATE TABLE "user" (
  "id" integer NOT NULL DEFAULT nextval('user_id_seq'),
  --- rest fields
);

ALTER SEQUENCE user_id_seq OWNED BY user.id;

COMMIT;
于 2020-01-15T04:46:49.447 回答