oracle 检查是否存在唯一约束,并使用liquibase删除它

sg3maiej  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(129)

我有一个变更集,我最初检查是否存在唯一约束,如果存在,它将删除约束。

<changeSet author="loren"
               id="DROP_UNIQUE_CONSTRAINT_RULEPRIORITY_ORACLE_v1" dbms="oracle">
        <preConditions onFail="MARK_RAN">
            <sqlCheck expectedResult="1">
                SELECT COUNT(*)
                FROM USER_CONSTRAINTS
                WHERE CONSTRAINT_NAME='UC_RULES_PRIORITY'
            </sqlCheck>
        </preConditions>
        <dropUniqueConstraint constraintName="UC_RULES_PRIORITY"
                              schemaName="${main.schema}"
                              tableName="RULES"/>

</changeSet>

字符串
问题是它似乎没有通过先决条件。它总是显示MARK_RAN,这意味着没有找到约束。反过来,约束将永远不会被丢弃。
我尝试在我的数据库中执行SELECT语句,它返回1。
这是正确的方法还是有其他解决方案?

wljmcqd8

wljmcqd81#

要总结备注:

<changeSet author="loren"
               id="DROP_UNIQUE_CONSTRAINT_RULEPRIORITY_ORACLE_v1" dbms="oracle">
        <preConditions onFail="MARK_RAN">
            <sqlCheck expectedResult="1">
                SELECT COUNT(*)
                FROM all_constraints
                WHERE CONSTRAINT_NAME='UC_RULES_PRIORITY'
                AND OWNER='${main.schema}'
            </sqlCheck>
        </preConditions>
        <dropUniqueConstraint constraintName="UC_RULES_PRIORITY"
                              schemaName="${main.schema}"
                              tableName="RULES"/>

</changeSet>

字符串
@Loren:请调整和/或发布您自己的答案。

相关问题