使用 SQL 序列

问题描述 投票:0回答:1

如何将如下所示的 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 并且可以以某种方式转换这个序列并获得类似的结果吗?

sql-server spring azure-sql-database sequence liquibase
1个回答
0
投票

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>
© www.soinside.com 2019 - 2024. All rights reserved.