こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

VIEW は、CREATE OR REPLACE VIEW のようにして差し替えることができますが、
ストアドファンクションは、このような差し替えには対応していないのでしょうか?

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

投稿日時 - 2008-05-21 21:56:14

QNo.4040053

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2008-05-22 13:39:34

補足

ご回答ありがとうございます。

DDLはrollebackできないのですね。

PostgreSQLのように、
CREATE OR REPLACE FUNCTION
ができず、
DROP FUNCTION
CREATE FUNCTION
としなければいけないのであれば、
DROP FUNCTION

CREATE FUNCTION
の間に、DROP したストアドファンクションが、別プロセスから
呼び出されると、エラーを起してしまいますので、
差し替えは不可能と考えてよいということでしょうか?

投稿日時 - 2008-05-25 11:35:41

お礼

DROP FUNCTION

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

投稿日時 - 2008-08-09 23:03:09

あなたにオススメの質問