gpt4 book ai didi

oracle - 创建可重新运行的 Oracle DDL SQL 脚本

转载 作者:行者123 更新时间:2023-12-02 00:31:01 26 4
gpt4 key购买 nike

我们的开发团队在本地机器上进行所有开发,包括数据库。当我们对模式进行更改时,我们将 SQL 保存到一个文件中,然后将该文件发送到版本控制系统(如果有更好的做法,我也愿意听取)。

在 SQL Server 上工作时,我们会将更新包装在“if exists”语句周围,使它们可以重新运行。我没有在 Oracle 10g 项目上工作,我找不到任何做同样事情的 oracle 函数。我能够找到 this dbaforums.org 上的线程,但这里的答案似乎有点笨拙。

最佳答案

我假设这是为了某种自动化构建过程并在出现问题时从头开始重做构建。

正如 Shannon 指出的那样,过程、函数和包等 PL/SQL 对象具有“创建或替换”选项,因此第二次重新编译/重新运行就可以了。赠款也应该没问题。

对于表创建和 DDL,您可以采用以下方法之一。

1) 不要向脚本添加任何删除命令,并要求您的开发团队为各个模块提供恢复脚本。

因此,对于他们添加到构建中的每个创建表,他们都会将等效的“DROP TABLE..”添加到脚本“build_rollback.sql”中。如果您的构建失败,您可以在从头开始构建之前运行此脚本。

2) 第二种(也是我见过的最常用的方法)是在创建表语句之前包含 DROP 表,然后忽略构建日志中的“表或 View 不存在”错误。像..

DROP TABLE EMP;
CREATE TABLE EMP (
.......
.......
);

您发布的帖子存在重大缺陷。最重要的一点是您始终以增量方式创建表。例如,您的数据库已经有 100 个表,并且您要添加 5 个表作为此版本的一部分。该脚本为所有 100 个表假脱机 DROP 创建,然后执行它,这没有多大意义(除非您是第一次构建数据库)。

关于oracle - 创建可重新运行的 Oracle DDL SQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6750454/

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