我希望对此问题有所帮助。 我正在运行一个使用MySQL数据库的网站。我在MySQL Workbench中构建了数据库模型,并且所有SQL查询都是存储过程。 问题是,当我对数据库进行结构更改时,我不知道哪些存储过程受到影响,因此我要么手动列出所有过程并手动进行更改,要么使用try-and-error方法。 这个问题 - 有没有一种方法来自动化存储过程更新过程。我想知道在对数据库进行特定结构更改时存储过程会受到什么影响。 如果MySQL无法实现,那么是否可以与其他数据库一起使用? (开源或商业)。 谢谢。在对数据库进行结构更改后更新MySQL存储过程
2
A
回答
0
除非实际运行该过程(这会导致错误),否则MySQL不会告诉您哪些过程受到任何更改的影响。该INFORMATION_SCHEMA
有一个表ROUTINES
其中MySQL提供有关存储例程的信息(包括过程和函数):
USE INFORMATION_SCHEMA;
DESCRIBE ROUTINES;
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM ROUTINES;
没有完成它自己,但我敢肯定,你可以写一个SQL查询,将搜索针对更改了ROUTINE_DEFINITION
行中的列名,并为您提供了需要修改的所有过程的列表。
请记住,任何对过程的更改都需要使用DROP PROCEDURE
/CREATE PROCEDURE
命令完成。您无法直接在INFORMATION_SCHEMA
数据库中进行任何更改。
- MySQL参考手册:19. INFORMATION_SCHEMA Tables
- MySQL参考手册:19.8. The INFORMATION_SCHEMA ROUTINES Table
2
在Oracle中,如果任何依赖对象被更改或变为无效,则存储过程将变为无效。相关对象包括引用的其他存储过程,表,包等
为无效一个可以执行
SELECT object_type, count(*)
FROM user_objects
WHERE status = 'INVALID'
GROUP BY object_type
DBA可以简单地运行一个脚本,所有目前的对象的数量($ORACLE_HOME/rdbms/admin/utlrp.sql
)编译所有无效的对象(视图,过程,包,函数,触发器等)。 Oracle的第三方工具(如Toad)通过GUI提供类似的功能。
+0
感谢这个宝贵的建议下
更多信息。也许有一天我决定从MySQL迁移。 –
相关问题
- 1. 通过db:migrate更改结构数据库后,Rails如何执行数据更新?
- 2. 存储过程未更新数据库
- 3. 重新创建mysql数据库结构和存储过程
- 4. 更改MySQL存储过程'数据库整理'名称
- 5. MySql存储过程更新数据库记录
- 6. 更改数据库结构
- 7. 在存储过程中使用临时表进行更新mysql
- 8. 在使用存储过程修改数据库之后更新上下文
- 9. 在存储过程更新数据库之后,从数据库重新加载对象,而不是缓存?
- 10. 更新应用程序时更改SQLite数据库结构
- 11. 需要更改存储库结构
- 12. 更新mysql数据库结构(表配置+程序/函数)并保存数据
- 13. 更新数据库,对DataTable进行更改...... confusion
- 14. Mysql - 更改数据库结构 - 数据库场景
- 15. 存储过程不更新数据
- 16. 守护进程软件在后台更新mysql数据库
- 17. extjs更改存储数据时更新
- 18. 更改ANSI_NULLS在数据库设置为所有存储过程
- 19. 在存储过程中更改数据库
- 20. 在存储过程中更改数据库名称
- 21. Mercurial和TortoiseHG - 推送更改后更新远程存储库
- 22. PHP更换存储在MySQL数据库
- 23. 存储过程更改后实体框架不更新
- 24. 如何在更改数据库后正确更新实体模型结构
- 25. 如何在更改数据库结构后正确更新实体模型?
- 26. 数据库更改后ListView未更新
- 27. 灵活的更新存储过程Mysql
- 28. MYSQL存储过程不更新列
- 29. MYSQL存储过程只记录更新
- 30. MySQL的多个存储过程更新
谢谢你为我工作。 –
不客气。祝你的程序顺利。 – GregD