我正在处理一个将 Spring MVC 与 JPA、Liquibase 和 Postgres 结合使用的项目。我有一些人口脚本 (SQL),其中包含州、城市、邮政编码和地址,在表/值之间具有适当的关系。
<changeSet id="10" author="cezar">
<sql dbms="postgresql"
endDelimiter=";"
splitStatements="true"
stripComments="true">
INSERT INTO ..... VALUES (.....);
</sql>
</changeSet>
好吧,一切顺利,Liquibase 实际上填充了数据库,但是当我需要添加新地址时出现了问题,并且出现了一些违反主键的异常。我知道我需要修复序列,但在应用程序启动时填充数据库后我该怎么做?
提前致谢!
最佳答案
您可以只添加另一个调用 setval()
的 SQL 语句在你的变更集中:
<changeSet id="10" author="cezar">
<sql dbms="postgresql"
endDelimiter=";"
splitStatements="true"
stripComments="true">
INSERT INTO ..... VALUES (.....);
SELECT setval('sequence_name', (select max(id_column) from the_table));
</sql>
</changeSet>
然而,只有在没有同时对表进行并发插入的情况下,这才会正常工作
关于spring - 在使用 liquibase 填充数据库后,如何更正 Postgres 序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255639/