aw *_*rud 3 sql database oracle ddl
我使用SQL Developer的GUI进行DDL更改.问题是,我需要将相同的更改应用于测试环境.我想知道其他人如何处理这个问题.目前我不得不手动编写ALTER语句以使测试环境与开发环境保持一致,但这很容易出错(两次做同样的事情).如果测试环境中没有重要数据,我通常会把所有东西都搞砸,从dev导出DDL脚本并在测试中从头开始运行它们.
我知道有些触发器可以存储每个DDL更改,但这是一个高度共享的环境,我想尽可能避免这种情况.
也许我应该手动编写DDL内容而不是使用GUI?
我已经看到了I-not-know-how-many方法试图解决这个问题,最后我认为你需要维护手动脚本.
现在,你不一定要自己写.在MSSQL中,当您进行更改时,Generate Script会有一个小按钮,它会为您正在进行的更改吐出一个SQL脚本.我知道你在谈论Oracle,自从我使用他们的GUI以来已经有几年了,但我只能想象他们有相同的功能.
但是,您无法手动使用脚本.对于预先存在的数据,您将遇到很多问题,例如新列的默认值或如何处理重命名/删除/移动列的数据.这只是随着时间的推移使用数据库模式的分析的一部分,你无法摆脱它.如果您尝试使用完全自动化的解决方案,您的数据迟早会变得混乱.
我建议的一件事是,为了让您的生活更轻松,请确保将架构更改与代码更改分开.不同之处在于对表和列的模式更改必须只运行一次而不能再次运行,因此必须作为单独的更改脚本进行版本控制.但是,代码更改(如存储过程,函数甚至视图)可以(并且应该)反复运行,并且可以像任何其他代码文件一样进行版本控制.我见过的最好的方法就是当我们在VSS中拥有所有的proc/functions/views时,我们的构建过程将全部删除,并在每次更新时重新创建它们.这与重建C#/ Java /任何代码的想法相同,因为它确保所有内容始终是最新的.