代码之家  ›  专栏  ›  技术社区  ›  Luke

在Postgresql数据库上使用ALTER SEQUENCE进行Sqitch迁移没有效果

  •  0
  • Luke  · 技术社区  · 6 年前

    当我用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; 语句(在迁移运行之后),我插入的下一行 身份证件 列具有值 12345

    ALTER SEQUENCE... 但这似乎并没有任何积极的效果。

    我怎样才能成功地执行 Squitch迁移中的语句?

    0 回复  |  直到 6 年前
        1
  •  0
  •   alex2007v    6 年前

    你试过这个吗:

    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;
    
    推荐文章