Lor*_*ren 6 sql oracle liquibase
我有一个变更集,其中我最初检查唯一约束是否存在,然后如果存在,它将删除约束。
<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>
Run Code Online (Sandbox Code Playgroud)
问题是它似乎没有通过先决条件。它总是说 MARK_RAN 意味着没有找到约束。反过来,约束永远不会被删除。
我尝试在我的数据库中执行 SELECT 语句,它返回 1。
这是正确的方法还是有替代解决方案?
总结一下评论:
<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>
Run Code Online (Sandbox Code Playgroud)
@Loren:请调整和/或发布您自己的答案。