【发布时间】:2012-01-09 21:36:46
【问题描述】:
在我们的应用程序中,只有大约 25% 的数据库触发器出现在 DBA_SOURCE 中。我知道如果我进行实际修改(例如添加和删除空格)然后重新编译触发器,我可以强制其他人出现,但我有大约 400 个触发器要修改(这是一个相当大的应用程序)。只是用alter trigger <triggername> compile; 重新编译触发器并没有完成任何事情。
如果触发器不在 DBA_SOURCE 中,我们就无法对触发器代码进行文本搜索。
有没有更简单的方法来完成这个?有没有办法防止以后出现这个问题?
我们使用的是 Oracle 10.2.0.5.0。
【问题讨论】:
-
也许我应该补充一点,这是在我们的开发环境中,所以无论我做什么都不会搞砸生产。
-
触发器是在源代码管理中,还是只是在数据库中?如果有源代码控制(它们应该在哪里),那么您应该能够对存储触发器的文件进行文本搜索。我承认搜索数据库通常更容易,但关键是数据库不应该成为代码的“主副本”,即使在 dev 上也是如此——多年前,当错误的 dev 数据库被错误地删除时,我学到了这个教训!
-
不幸的是,它们不在任何源代码管理中,只是在数据库中。希望我能以其他方式说服团队的其他成员,但事实就是如此(我在这里已经 7 年了,我仍然是这里的新手)。也许我可以以此为动力!
-
不幸的是,我看到一个又一个项目,你的情况一遍又一遍地重复!至少你似乎接受它并不理想。受此启发,我一直致力于开发一种构建工具,以帮助团队更好地管理数据库中的代码。有兴趣的可以看看dbgeni.com关于触发器,我一直在all_source中找到触发器源,只要我去寻找它。