Java 液化酶自增
如何使用liquibase在PostgreSQL中的列上使用“startWith”设置autoincrement属性 出于某种原因,它总是从1开始。我尝试使用自定义序列,但也没用Java 液化酶自增,java,postgresql,liquibase,Java,Postgresql,Liquibase,如何使用liquibase在PostgreSQL中的列上使用“startWith”设置autoincrement属性 出于某种原因,它总是从1开始。我尝试使用自定义序列,但也没用 <column autoIncrement="true" startWith="100" name="id" type="bigint"> 这是我当前的列定义,它不起作用 编辑: 我想使用liquibase从csv导入数据。我尝试了以下方法: <changeSet author="author"
<column autoIncrement="true" startWith="100" name="id" type="bigint">
这是我当前的列定义,它不起作用
编辑:
我想使用liquibase从csv导入数据。我尝试了以下方法:
<changeSet author="author" id="createSequence">
<createSequence
incrementBy="1"
sequenceName="mytable_id_seq"
startValue="1000"/>
</changeSet>
</changeSet>
<changeSet author="author" id="1-mytable">
<createTable tableName="mytable">
<column name="id" type="BIGSERIAL" defaultValueComputed="nextval('mytable_id_seq')">
<constraints primaryKey="true" primaryKeyName="mytable_pkey"/>
</column>
</createTable>
<loadData encoding="UTF-8"
file="liquibase/data/mytable.csv"
separator=","
tableName="mytable">
</loadData>
</changeSet>
如果我尝试这样做,我会收到以下错误“currval of sequence“table_id_seq”尚未在此会话中定义”,我认为它使用公共模式中的序列,而不是我设置为liquibase的序列
在本例中,使用的序列是来自公共模式的序列,但我想使用设置为liquibase的模式,而不是使用bigserial,这是一种特定于postgres的自动递增bigint。如果要设置自己的增量和序列,请使用bigint。 数据类型smallserial、serial和bigserial不是真正的类型,只是为了便于创建唯一标识符列(类似于某些其他数据库支持的AUTO_INCREMENT属性)。在当前实现中,指定: 与
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;
从这里
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;