我希望對此問題有所幫助。 我正在運行一個使用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