トリガーの挿入
これまでの基本的な知識を念頭に置いて、サポートされている各トリガーの種類とその違いを見てみましょう。
INSERT トリガーは、INSERT ステートメントの実行前または後に実行されます。 次の点を知っておく必要があります:
1. INSERT トリガー コードでは、挿入された行にアクセスするために NEW という名前の仮想テーブルを参照できます。
2. BEFORE INSERT トリガーでは、NEW の値を参照できます。更新も可能です (挿入された値の変更が可能)。
3. AUTO_INCREMENT 列の場合、INSERT が実行される前は NEW に 0 が含まれ、INSERT が実行された後には新しい自動生成された値が含まれます。
これが例です (実用的で役立つ例)。 AUTO_INCREMENT カラムには、MySQL によって自動的に割り当てられる値が含まれます。新しく生成された値を決定する方法ですが、より良い方法があります:
入力:
create trigger neworder after insert on orders for each row select new .order_num;
分析: このコードは、AFTER INSERT ON 注文を実行する neworder というトリガーを作成します。新しい注文を order テーブルに挿入すると、MySQL は新しい注文番号を生成し、order_num に保存します。トリガーは NEW.order_num からこの値を取得して返します。 BEFORE INSERT ステートメントが実行される前に新しい order_num が生成されていないため、このトリガーは AFTER INSERT で実行する必要があります。このトリガーを使用すると、注文への挿入ごとに常に新しい注文番号が返されます。
このトリガーをテストするには、次のように新しい行を挿入してみてください:
入力:
insert into orders(order_date,cust_id) values(now(),10001);
出力:
分析: 注文には 3 つの列が含まれています。 order_date と cust_id を指定する必要があります。order_num は MySQL によって自動的に生成され、order_num が自動的に返されるようになりました。
前ですか後ですか? 通常、BEFORE はデータの検証と精製に使用されます (目的は、テーブルに挿入されたデータが実際に必要なデータであることを確認することです)。このヒントは UPDATE トリガーにも当てはまります。
【関連おすすめ】
3. 文字セットと照合順序に関するMySQLの使用方法のチュートリアル
5. MySQL トランザクション - 保持ポイントの使用とデフォルトのコミット動作の変更についての詳細な説明
以上がMySQLのインサートトリガー(インサート)について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。