【发布时间】:2020-10-13 10:45:19
【问题描述】:
在 liquibase changset 中,我正在向数据库中插入一些记录
<changeSet id="test" author="xyz">
<insert tableName="testtable">
<column name="id" value="1"/>
<column name="name" value="testdata"/>
</insert>
</changeSet>
然后使用 jdbcTemplate 我尝试使用实例 update() 方法插入新行。
jdbcTemplate.update(
"INSERT INTO test.testtable(name) VALUES (?)",
new Object[] {
someObject.getName()
});
第一次运行上述方法时,我收到错误,表中已存在具有此 ID 的记录。但是,当我重复操作时,我成功地增加了 ID,值为 2。
如何将 liquibase 和 jdbcTemplate 集成在一起来消除这个问题?我希望 jdbcTemplate 会以某种方式识别此 ID 1 已被占用并插入具有递增、非冲突、唯一 ID 的数据。
我正在使用 postgres。
是否有任何选项可以在不删除带有硬编码 ID 值的 liquibase 条目的情况下执行此操作?
【问题讨论】:
-
您可以尝试通过删除列 id 来运行 changeSet。如果启用了自动递增,那么 id 列应该由 db 填充。
标签: postgresql liquibase jdbctemplate