• 締切済み

ストアドファンクションを差し替えたい

VIEW は、CREATE OR REPLACE VIEW のようにして差し替えることができますが、 ストアドファンクションは、このような差し替えには対応していないのでしょうか? 本番稼動しているデータベースのストアドファンクションを差し替えたい場合は、 BEGIN DROP FUNCTION CREATE FUNCTION COMMIT とすればよろしいでしょうか?

みんなの回答

回答No.1

マニュアルを見れば分かることでは? http://dev.mysql.com/doc/refman/5.1/ja/create-procedure.html >本番稼動しているデータベースのストアドファンクションを差し替えたい場合は、 >BEGIN >DROP FUNCTION >CREATE FUNCTION >COMMIT DDL実行時は内部的にCOMMITが出るため、BEGIN~COMMIT指定は無意味です。 http://dev.mysql.com/doc/refman/5.1/ja/cannot-roll-back.html

sweepea
質問者

お礼

DROP FUNCTION と CREATE FUNCTION の間に別のプレセスが走らないよう、ユーザのアクセスが少ない 早朝に行うことにしました。

sweepea
質問者

補足

ご回答ありがとうございます。 DDLはrollebackできないのですね。 PostgreSQLのように、 CREATE OR REPLACE FUNCTION ができず、 DROP FUNCTION CREATE FUNCTION としなければいけないのであれば、 DROP FUNCTION と CREATE FUNCTION の間に、DROP したストアドファンクションが、別プロセスから 呼び出されると、エラーを起してしまいますので、 差し替えは不可能と考えてよいということでしょうか?

関連するQ&A