ホームページ >データベース >mysql チュートリアル >MySQLの削除トリガー(delete)の使い方を詳しく解説

MySQLの削除トリガー(delete)の使い方を詳しく解説

巴扎黑
巴扎黑オリジナル
2017-05-19 15:24:0123933ブラウズ

DELETE トリガー

トリガーは、データの整合性を確保するために SQL サーバーによって提供されるメソッドであり、その実行はプログラムによって呼び出されたり、手動で開始されたりするものではありません。ただし、イベントによってトリガーされます。たとえば、テーブルが操作されると (挿入、削除、更新)、その実行がアクティブ化されます。トリガーは、データ整合性の制約とビジネス ルールを強制するためによく使用されます。 トリガーは、DBA_TRIGGERS および USER_TRIGGERS データ ディクショナリにあります。 SQL3 トリガーは、データベースを変更するためにシステムによって自動的に実行できるステートメントです。

推奨される関連する mysql ビデオ チュートリアル: "

mysql チュートリアル"

トリガーは他のテーブルをクエリでき、複雑な SQL ステートメントを含めることができます。これらは主に、複雑なビジネス ルールや要件へのコンプライアンスを強制するために使用されます。例: 顧客の現在のアカウントのステータスに基づいて、新しい注文の挿入を許可するかどうかを制御できます。

DELETE トリガーは、DELETE ステートメントの実行前または後に実行されます。

次の 2 つの点を知っておく必要があります:

1. DELETE トリガー コード内で、削除された行にアクセスするために OLD という名前の仮想テーブルを参照できます。

2. OLD の値はすべて読み取り専用です。更新できません。次の例は、OLD を使用して、削除する行をアーカイブ テーブルに保存する方法を示しています。

入力:

create trigger deleteorder before delete on orders for each row
begin
insert into archive_orders(order_num,order_date,cust_id)
values(old.order_num,old.order_date,old.cust_id);
end;

分析: このトリガーは、注文が削除される前に実行されます。 INSERT ステートメントを使用して、OLD の値 (削除する注文) を archive_orders というアーカイブ テーブルに保存します (この例を実際に使用するには、注文と同じ列を持つ archive_orders というテーブルを作成する必要があります)。

(AFTER DELETE トリガーとは対照的に) BEFORE DELETE トリガーを使用する利点は、何らかの理由で注文をアーカイブできない場合、DELETE 自体が破棄されることです。

マルチステートメントトリガー ご覧のとおり、トリガー deleteorder は BEGIN ステートメントと END ステートメントを使用してトリガー本体をマークします。この例ではこれは必要ありませんが、問題はありません。 BEGIN END ブロックを使用する利点は、トリガーが複数の SQL ステートメント (BEGIN END ブロック内で 1 つずつ) に対応できることです。

【関連おすすめ】

1.

mysql無料ビデオチュートリアル

2.

MySQLの挿入トリガー(挿入)の詳細説明

3.

mysqlトリガーの紹介とトリガーの作成と削除方法

4.

MySQL 文字セットと照合順序の使用チュートリアル

5.

MySQL 文字セットと照合順序の概要

以上がMySQLの削除トリガー(delete)の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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