DELETE トリガー
トリガーは、データの整合性を確保するために SQL サーバーによって提供されるメソッドであり、その実行はプログラムによって呼び出されたり、手動で開始されたりするものではありません。ただし、イベントによってトリガーされます。たとえば、テーブルが操作されると (挿入、削除、更新)、その実行がアクティブ化されます。トリガーは、データ整合性の制約とビジネス ルールを強制するためによく使用されます。 トリガーは、DBA_TRIGGERS および USER_TRIGGERS データ ディクショナリにあります。 SQL3 トリガーは、データベースを変更するためにシステムによって自動的に実行できるステートメントです。 推奨される関連する mysql ビデオ チュートリアル: "mysql チュートリアル"
次の 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. 2. 3. 4. 5.
以上がMySQLの削除トリガー(delete)の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。