You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liquibase使用序列nextval作为插入ID的正确语法咨询

解决方案

你的报错是因为valueSequenceNext并不是<loadData>元素下<column>标签的合法属性,该属性仅适用于<addColumn>等其他类型的变更集元素。要在loadData中用Oracle序列生成主键ID,应该使用defaultValueComputed属性,它支持传入SQL表达式来计算列值。

修改后的XML配置

<changeSet>
   <loadData file="foo.csv" separator="," tableName="BAR" relativeToChangeLogFile="true">
      <column name="id" type="numeric" defaultValueComputed="BAR_SEQ.NEXTVAL"/>
      <column name="ukk" type="string"/>
      <column name="mukk" type="string"/>
      <column name="fukk" type="string"/>
   </loadData>
</changeSet>

说明

  • defaultValueComputed会让Liquibase在插入每条CSV数据时,执行指定的SQL表达式(这里是BAR_SEQ.NEXTVAL)来生成id列的值。
  • 你的CSV文件无需修改,因为id列不需要在CSV中提供,Liquibase会自动为每条记录填充序列的下一个值。

如果使用的是Liquibase 4.0+版本,也可以使用valueComputed属性,效果与defaultValueComputed一致,两种写法都能兼容Oracle数据库。

内容的提问来源于stack exchange,提问作者szelelaci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 23:47:18