ストアド プロシージャ
MySQL 5 が必要 MySQL 5 ではストアド プロシージャのサポートが追加されているため、この章の内容は MySQL 5 以降のバージョンに適用されます。
これまでに使用されたほとんどの SQL ステートメントは、1 つ以上のテーブルに対する単一のステートメントです。すべての操作がそれほど単純であるわけではなく、多くの場合、完全な操作を完了するには複数のステートメントが必要です。たとえば、次の状況を考えてみましょう。
1. 注文を処理するには、対応する商品の在庫があることを確認する必要があります。
2. 在庫のある商品がある場合、これらの商品は他人に転売されないように予約する必要があり、正しい在庫レベルを反映するために利用可能な商品の数が減らされます。
3. 在庫のない商品は注文する必要があり、サプライヤーと何らかのやり取りが必要になります。
4. 該当する顧客には、どの商品が在庫にあり (すぐに発送可能)、どの商品が購読解除されているかを通知する必要があります。
これは明らかに完全な例ではなく、本書で使用されているサンプル テーブルの範囲を超えていますが、私たちが言いたいことを表現するには十分です。この処理を実行するには、多数のテーブルに対して複数の MySQL ステートメントが必要です。さらに、実行する必要がある特定のステートメントとその順序は固定されておらず、インベントリ内にどのアイテムがあり、どのアイテムが含まれていないかに応じて変更される可能性があります (また変更される予定です)。
では、このコードはどのように書くのでしょうか?各ステートメントを個別に記述し、結果に基づいて追加のステートメントを条件付きで実行できます。これは、この処理が必要になるたびに (また、それを必要とするすべてのアプリケーションで) 実行する必要があります。
ストアド プロシージャを作成できます。簡単に言えば、ストアド プロシージャは、将来の使用のために保存される 1 つ以上の MySQL ステートメントのコレクションです。これらはバッチ ファイルと考えてください。ただし、その役割はバッチ処理に限定されません。
ストアド プロシージャを使用する理由
ストアド プロシージャが何であるかがわかったところで、なぜストアド プロシージャを使用する必要があるのでしょうか。理由はたくさんありますが、主な理由のいくつかを以下に示します。
1. 使いやすい単位で処理をカプセル化することで、複雑な操作を簡素化します。
2. これにより、一連の処理手順を繰り返し確立する必要がないため、データの整合性が保証されます。すべての開発者とアプリケーションが同じ (パイロットとテスト) ストアド プロシージャを使用する場合、使用されるコードは同じになります。これの延長がミスの防止です。実行する必要がある手順が増えるほど、エラーが発生する可能性が高くなります。エラーを防ぐことで、データの一貫性が保証されます。
3. 変更の管理を簡素化します。テーブル名、列名、ビジネス ロジック (またはその他) が変更された場合は、ストアド プロシージャのコードを変更するだけで済みます。使用している人はその変化に気づく必要さえありません。これの延長がセキュリティです。ストアド プロシージャを介して基になるデータへのアクセスを制限すると、(意図的かどうかにかかわらず) データが破損する可能性が低くなります。
4. パフォーマンスを向上させます。ストアド プロシージャを使用すると、個別の SQL ステートメントを使用するよりも高速になるためです。 5. 単一のリクエストでのみ使用できる MySQL 要素と機能がいくつかあり、ストアド プロシージャを使用して、より強力で柔軟なコードを作成できます。言い換えれば、ストアド プロシージャを使用することには、シンプルさ、セキュリティ、パフォーマンスの高さという 3 つの主な利点があります。明らかに、それらはすべて重要です。ただし、SQL コードをストアド プロシージャに変換する前に、その欠点のいくつかについても認識しておく必要があります。
6. 一般に、ストアド プロシージャの作成は、基本的な SQL ステートメントよりも複雑です。 7. ストアド プロシージャを作成するためのセキュリティ アクセス権がない可能性があります。多くのデータベース管理者はストアド プロシージャの作成権限を制限し、ユーザーにストアド プロシージャの使用を許可しますが、ストアド プロシージャの作成を許可しません。これらの欠点にもかかわらず、ストアド プロシージャは非常に便利なので、可能な限り使用する必要があります。ストアド プロシージャを作成できないのですか? MySQL を引き続き使用して、ストアド プロシージャの作成のセキュリティとアクセスを、ストアド プロシージャの実行のセキュリティとアクセスから分離することができます。これは良いことです。独自のストアド プロシージャを作成できない (または作成したくない) 場合でも、必要に応じて他のストアド プロシージャを実行できます。
以上がなぜ mysql ストアド プロシージャを使用するのでしょうか? mysql ストアド プロシージャの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。