ホームページ >データベース >mysql チュートリアル >MySQLのインサートトリガー(インサート)について詳しく解説

MySQLのインサートトリガー(インサート)について詳しく解説

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

トリガーの挿入

これまでの基本的な知識を念頭に置いて、サポートされている各トリガーの種類とその違いを見てみましょう。

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);

出力:

MySQLのインサートトリガー(インサート)について詳しく解説

分析: 注文には 3 つの列が含まれています。 order_date と cust_id を指定する必要があります。order_num は MySQL によって自動的に生成され、order_num が自動的に返されるようになりました。

前ですか後ですか? 通常、BEFORE はデータの検証と精製に使用されます (目的は、テーブルに挿入されたデータが実際に必要なデータであることを確認することです)。このヒントは UPDATE トリガーにも当てはまります。

【関連おすすめ】

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

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

3. 文字セットと照合順序に関するMySQLの使用方法のチュートリアル

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

5. MySQL トランザクション - 保持ポイントの使用とデフォルトのコミット動作の変更についての詳細な説明

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

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