6

インターネットで検索したところ、ストア プロシージャの本体を変更する唯一の方法は、削除して再度作成することであることがわかりました。メカニズムに問題はないように見えますが、サーバー データベース上のデータを更新するためにストア プロシージャを呼び出し続けるクライアント アプリケーション (または数千の分散クライアント) がある場合、プロシージャを削除すると、データの損失や破損が発生します。

「CREATE PROCEDURE IF EXIST...」のような構文があるか、それと同様の機能があれば、更新操作がスムーズに行われると考えています。しかし、MySQL で利用できるようなものは見つかりませんでした。

では、この問題はどのように解決できると思いますか? 素晴らしい考え?

4

1 に答える 1

4

MySQL でストアド プロシージャを変更することはできません (ただし、その特性は変更できます)。ページからALTER PROCEDURE

このステートメントを使用して、ストアド プロシージャの特性を変更できます。ALTER PROCEDURE ステートメントで複数の変更を指定できます。ただし、このステートメントを使用してストアド プロシージャのパラメーターまたは本体を変更することはできません。このような変更を行うには、DROP PROCEDURE および CREATE PROCEDURE を使用してプロシージャを削除し、再作成する必要があります。

この更新の実行中にデータが失われる可能性はありますが (ウィンドウは比較的小さいはずです)、データが破損する可能性はほとんどありません。データベースのダウンタイムによるデータ損失からシステムを保護する必要がある場合は、メッセージ キューイング テクノロジを検討します。

于 2012-04-23T21:59:44.500 に答える