Миграция Sqitch с ALTER SEQUENCE на Postgresql дБ не имеет никакого эффекта - PullRequest
0 голосов
/ 15 января 2020

Когда я создаю таблицу с миграцией Sqitch, я хочу инициализировать ее начало SERIAL PRIMARY KEY чем-то отличным от 1. Однако по какой-то причине команда ALTER SEQUENCE, похоже, не оказывает никакого влияния.

Моя миграция развертывания выглядит примерно так:

BEGIN;

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

    ... more columns ...
  );

  ALTER SEQUENCE "user_id_seq" RESTART WITH 12345;

COMMIT;

После успешного выполнения описанной выше миграции Столбец id первой строки, вставляемой в мою таблицу user, имеет значение 1.

Однако, если я выполню оператор ALTER SEQUENCE "user_id_seq" RESTART WITH 12345; вручную (после выполнения миграций), следующая Когда я вставляю строку, столбец id имеет значение 12345.

Я пытался переместить оператор ALTER SEQUENCE... в его собственную миграцию, но, похоже, это не имеет никакого положительного эффекта.

Как успешно выполнить оператор ALTER SEQUENCE... в миграции Sqitch?

1 Ответ

0 голосов
/ 15 января 2020

Вы пробовали это:

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;
...