gpt4 book ai didi

sql - 防止删除不存在的序列、创建现有用户时出现错误

转载 作者:行者123 更新时间:2023-12-01 17:28:47 26 4
gpt4 key购买 nike

我有一堆创建/删除序列、用户和其他对象的 SQL 脚本。我通过 liquibase 运行这些脚本,但它们失败了,因为当我尝试删除不存在的序列或创建现有用户时,oracle 会提示。

有没有一种oracle方法可以防止错误的发生?

类似的事情

Create User / Sequence if not exists

Drop User/ Secuence if exists

据我所知,我有以下选择:

  • 编写 plsql 脚本
  • 使用 liquibase 上下文。
  • 使用 liquibase 前提条件,但这意味着工作量太大。

任何想法/想法将不胜感激。

最佳答案

Liquibase 有一个failOnError 属性,您可以在包含可能失败的调用的变更集上将其设置为 false。

<changeSet failOnError="false">
<createSequence sequenceName="new_sequence"/>
</changeSet>

这允许您简单地创建用户、创建序列、删除用户和删除序列更改集,如果语句因用户/序列存在/不存在而引发错误,它们仍将被标记为已运行并更新将继续。

这种方法的缺点是,如果它们因其他原因(错误的权限、连接失败、无效的 SQL 等)而出错,它还会将它们标记为已运行并继续。更准确的方法是使用前提条件,如下所示:

<changeSet>
<preconditions onFail="MARK_RAN"><not><sequenceExists/></not></preconditions>
<createSequence name="new_sequence"/>
</changeSet>

当前没有 userExists 前提条件,但您可以创建自定义前提条件或回退到前提条件。请参阅http://www.liquibase.org/documentation/preconditions.html用于文档

关于sql - 防止删除不存在的序列、创建现有用户时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1625567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com