【发布时间】:2014-05-27 06:24:15
【问题描述】:
我应该使用column 的什么属性来从postgresql sequence 获取索引值? valueNumeric? valueComputed?
据我了解,属性的值应该是nextval( 'simple_id_seq' )。
【问题讨论】:
标签: postgresql liquibase
我应该使用column 的什么属性来从postgresql sequence 获取索引值? valueNumeric? valueComputed?
据我了解,属性的值应该是nextval( 'simple_id_seq' )。
【问题讨论】:
标签: postgresql liquibase
在 postgresql 中,序列值被创建为 INTEGER 或 BIGINT。
这通常是通过使用 SERIAL 或 BIGSERIAL 作为列类型来完成的......但会间接创建 int 或 bigint 的排序器并将列的默认值设置为 nextval(sequencer)。
在表数据的结果集中,该列包含 int 或 bigint。
通常不需要使用 nextval(sequencer) ...它会自动填充 INSERT 上的列(在 INSERT 语句中,该列不应出现)。
参考http://www.postgresql.org/docs/9.3/static/datatype-numeric.html
【讨论】:
如果您不想按照@double_word_distruptor 的建议使用 SERIAL 或 BIGSERIAL,请使用 valueComputed。
使用 valueComputed,您告诉 Liquibase 您正在传递一个类似 nextval('simple_id_seq') 的函数,它不会尝试将其解析为数字或进行任何引用。
您还可以使用 valueSequenceNext="simple_id_seq" 来获得一点跨数据库兼容性。
【讨论】: