【发布时间】:2010-04-11 18:26:21
【问题描述】:
对于使用 Oracle 8 DB 的应用程序,我提供了一个 SQL 脚本来设置触发器、序列等内容,这些内容可以复制并粘贴到 SQL*Plus 中。如果我尝试创建的序列已经存在,我希望脚本不会因错误而停止。对于触发器,这可以使用“创建或替换触发器...”轻松完成,但对于序列,这不起作用。我也试过 ""if not exists mysequence then create sequence ..." 但它也没有。有其他选择吗?
或者,如果这是不可能的,有没有办法在不存在 SQL*Plus 中止脚本的情况下执行“删除序列 mysequence”?
【问题讨论】:
-
Oracle 中的 AUTOINCREMENT 函数将如何帮助解决源代码控制/配置管理问题?
-
@APC:对不起,我不明白。你能更详细地解释一下吗?我的意思是:我需要的只是一个自动增量字段。在例如SQL Server 我只是将列定义为 autoinc 字段,就完成了。在 Oracle 中,我需要创建一个数字列,然后是一个序列,然后是一个触发器,以使用该序列来填充我的列。这对我来说似乎不是很简单。
-
我的观点是,如果你有适当的模式管理,你就不需要处理序列的先前存在,因为你只会对你知道该序列的数据库运行 CREATE SEQUENCE 语句不存在。
-
嗯,我需要为具有不同版本数据库的各种客户以及新客户提供该脚本。我当然可以找出哪个客户有什么架构,并有选择地为他们创建更新脚本,并且还有一个单独的脚本用于初始设置,但为了简单起见,我更喜欢有一个可供所有人使用的单一脚本。让支持部门的同事和在不了解 Oracle 的情况下进行安装的技术人员的工作变得更轻松,对我来说,因为我不需要整理帮助电话,因为有人使用了错误的脚本:-)