提问人:xMann999 提问时间:8/23/2023 最后编辑:Thom AxMann999 更新时间:8/23/2023 访问量:60
使用 SQL 序列
Using SQL sequences
问:
如何将如下所示的sql序列放入liquibase更改日志文件(xml)中?
甚至可能吗?
CREATE SEQUENCE sequence_option_1
START WITH COALESCE((SELECT MAX(id) FROM entity WHERE source = 'source1'), 1);
我没有选择创建具有最大 id 的表。
我想我必须在 T-SQL 中编写这个,那么是否有人知道 Transact-SQL 并可以以某种方式转换此序列并获得类似的结果?
答:
0赞
htshame
8/23/2023
#1
Liquibase 中有一个 createSequence 更改。但它看起来只接受整数值,并且没有像其他更改那样的属性。startValue
startValueComputed
因此,在您的情况下,您可以使用简单的更改,例如:<sql>
<changeSet id="foo" author="bar">
<preConditions onFail="MARK_RAN">
<not>
<sequenceExists sequenceName="sequence_option_1"/>
</not>
</preConditions>
<sql>
CREATE SEQUENCE sequence_option_1
START WITH COALESCE((SELECT MAX(id) FROM entity WHERE source = 'source1'), 1);
</sql>
</changeSet>
评论
0赞
xMann999
8/23/2023
它抛出 liquibase.exception.DatabaseException。是数据库故障吗?我正在使用 mssql 和 azure db
0赞
htshame
8/23/2023
有没有堆栈跟踪?还是根本原因?
0赞
xMann999
8/23/2023
它说:上下文初始化过程中遇到异常...创建名为“liquibase”的 bean 时出错...变更集的迁移失败...然后,reasion 是单词“COALESCE”附近的不正确语法
0赞
xMann999
8/23/2023
我尝试了不同的方法,但由于语法原因,总是有错误
1赞
htshame
8/23/2023
所以这意味着你的 sql 请求的语法是错误的。修好它,你应该很好。这不是 liquibase 问题
评论