自动增加Liquibase

时间:2019-03-01 15:52:56

标签: java postgresql liquibase

如何使用liquibase在PostgreSQL的列上使用'startWith'设置autoincrement属性?

由于某种原因,它总是从1开始。我尝试使用自定义序列,但这也无济于事。

#city

这是我当前无法使用的列定义。

编辑:

我想使用liquibase从csv导入数据。我尝试了以下方法:

<column autoIncrement="true" startWith="100" name="id" type="bigint">

如果我尝试此操作,则会收到以下错误“该会话中尚未定义序列“ table_id_seq”的序列”,并且我认为它使用了来自公共模式的序列,而不是我设置为liquibase的序列。 >

  1. 我尝试的另一件事是手动更新它:

        ALTER SEQUENCE mytable_id_seq以100重新启动;              

在这种情况下,使用的序列是公共模式中的序列,但是我想使用设置为liquibase的模式

2 个答案:

答案 0 :(得分:0)

看起来这是一个已知问题。 看看这个Jira ticket

答案 1 :(得分:0)

如果您要设置自己的增量和序列,请使用 bigint,而不是使用 bigserial,它是 postgres 特有的自动增量 bigint。 “数据类型 smallserial、serial 和 bigserial 不是真正的类型,而仅仅是创建唯一标识符列的符号方便(类似于某些其他数据库支持的 AUTO_INCREMENT 属性。在当前实现中,指定:”

CREATE TABLE tablename (
    colname SERIAL
);

相同
CREATE SEQUENCE tablename_colname_seq AS integer;
CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

从这里

https://www.postgresql.org/docs/12/datatype-numeric.html