如何使用liquibase在PostgreSQL的列上使用'startWith'设置autoincrement属性?
由于某种原因,它总是从1开始。我尝试使用自定义序列,但这也无济于事。
#city
这是我当前无法使用的列定义。
编辑:
我想使用liquibase从csv导入数据。我尝试了以下方法:
<column autoIncrement="true" startWith="100" name="id" type="bigint">
如果我尝试此操作,则会收到以下错误“该会话中尚未定义序列“ table_id_seq”的序列”,并且我认为它使用了来自公共模式的序列,而不是我设置为liquibase的序列。 >
ALTER SEQUENCE mytable_id_seq以100重新启动;
在这种情况下,使用的序列是公共模式中的序列,但是我想使用设置为liquibase的模式
答案 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;
从这里