ホームページ >データベース >mysql チュートリアル >mysqlのストアドプロシージャを変更するコマンドは何ですか?

mysqlのストアドプロシージャを変更するコマンドは何ですか?

青灯夜游
青灯夜游オリジナル
2020-10-12 09:58:283813ブラウズ

mysql でストアド プロシージャを変更するコマンドは「ALTER PROCEDURE」、構文形式は「ALTER PROCEDURE ストアド プロシージャ名 [特性...]」、特性の取り得る値は CONTAINS SQL です、SQL、INVOKER、DEFINER などはありません。

mysqlのストアドプロシージャを変更するコマンドは何ですか?

(推奨チュートリアル: mysql ビデオ チュートリアル)

実際の開発プロセスでは、ビジネス要件が変更されると、が発生したため、MySQL のストアド プロシージャの変更は避けられません。

MySQL では、ストアド プロシージャは ALTER PROCEDURE ステートメントを通じて変更されます。このセクションでは、ストアド プロシージャの変更方法を詳しく説明します。

MySQL でストアド プロシージャを変更するための構文形式は次のとおりです:

ALTER PROCEDURE 存储过程名 [ 特征 ... ]

特性はストアド プロシージャの特性を指定します。可能な値は次のとおりです:

  • CONTAINS SQL は、サブルーチンに SQL ステートメントが含まれているが、データの読み取りまたは書き込みのためのステートメントは含まれていないことを意味します。

  • NO SQL は、サブルーチンに SQL ステートメントが含まれていないことを意味します。

  • READS SQL DATA は、サブルーチンにデータを読み取るステートメントが含まれていることを示します。

  • MODIFIES SQL DATA は、サブルーチンにデータを書き込むステートメントが含まれていることを示します。

  • SQL SECURITY { DEFINER |INVOKER } 実行権限を持つユーザーを指定します。

  • DEFINER は、定義者のみが実行できることを意味します。

  • INVOKER は、呼び出し元が実行できることを示します。

  • COMMENT 'string' はコメント情報を表します。

例 1

次の例では、ストアド プロシージャ showtuscore の定義を変更し、読み取りおよび書き込み権限を MODIFIES SQL DATA に変更し、次のことを示しています。呼び出し元が実行できることを示すコードは次のとおりです:

mysql> ALTER PROCEDURE showstuscore MODIFIES SQL DATA SQL SECURITY INVOKER;
Query OK, 0 rows affected (0.01 sec)

コードを実行し、変更された情報を表示します。実行結果は次のとおりです:

mysql> SHOW CREATE PROCEDURE showstuscore \G
*************************** 1. row ***************************
           Procedure: showstuscore
            sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `showstuscore`()
    MODIFIES SQL DATA
    SQL SECURITY INVOKER
BEGIN
SELECT id,name,score FROM studentinfo;
END
character_set_client: gbk
collation_connection: gbk_chinese_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)

結果は、ストアド プロシージャが実行されたことを示します。正常に変更されました。実行結果から、データへのアクセス権限が MODIFIES SQL DATA に変更され、セキュリティ タイプも INVOKE に変更されたことがわかります。

ヒント: ALTER PROCEDURE ステートメントは、ストアド プロシージャの特定の特性を変更するために使用されます。ストアド プロシージャの内容を変更する場合は、最初に元のストアド プロシージャを削除してから、同じ名前で新しいストアド プロシージャを作成します。ストアド プロシージャの名前を変更する場合は、元のストアド プロシージャを削除します。最初にストアド プロシージャを作成し、次に別の名前で新しいストアド プロシージャを作成します。

関連する推奨事項: php トレーニング

以上がmysqlのストアドプロシージャを変更するコマンドは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。