sql – 在删除现有序列时创建现有用户时防止错误
发布时间:2020-12-12 06:54:31 所属栏目:MsSql教程 来源:网络整理
导读:我有一堆sql脚本,可以创建/删除序列,用户和其他对象.我通过liquibase运行这些脚本,但它们失败了,因为当我尝试删除不存在的序列或创建现有用户时,oracle会抱怨. 有没有一种预防错误的oracle方法? 某种东西 Create User / Sequence if not exists Drop User/ S
我有一堆sql脚本,可以创建/删除序列,用户和其他对象.我通过liquibase运行这些脚本,但它们失败了,因为当我尝试删除不存在的序列或创建现有用户时,oracle会抱怨.
有没有一种预防错误的oracle方法? 某种东西
据我所知,我有以下选择: >编写一个plsql脚本 任何想法/想法将不胜感激. 解决方法Liquibase具有failOnError属性,您可以在包含可能失败的调用的changeSets上将其设置为false.<changeSet failOnError="false"> <createSequence sequenceName="new_sequence"/> </changeSet> 这允许您具有简单的创建用户,创建序列,删除用户和删除序列changeSet,如果语句因为用户/序列存在/不存在而引发错误,则它们仍将被标记为已运行且更新将继续. 这种方法的缺点是,如果由于某些其他原因(错误的权限,连接失败,无效的SQL等)出错,它也会将它们标记为已运行并继续运行.更准确的方法是使用前置条件,如下所示: <changeSet> <preconditions onFail="MARK_RAN"><not><sequenceExists/></not></preconditions> <createSequence name="new_sequence"/> </changeSet> 当前没有userExists前置条件,但您可以创建自定义前置条件或回退到前置条件.有关文档,请参见http://www.liquibase.org/documentation/preconditions.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容