MySQL でトリガーを作成するには、まずトリガーに格納するテーブルを作成し、次にトリガーがアクティブ化される時刻を設定し、最後に定義された条件が満たされたときにトリガーする必要があります。トリガーに定義されたアクションを実行する ステートメント集
[推奨コース: MySQL チュートリアル]
Trigger
Trigger は MySQL のデータベース オブジェクトの 1 つで、プログラミング言語の関数とよく似ており、宣言、実行、等ただし、トリガーの実行はプログラムによって呼び出されたり、手動で開始されたりするのではなく、イベントによってトリガーおよびアクティブ化されて実行が実現されます。 DOM のイベントに似ています。
トリガーの作成
トリガーを作成するための構文は次のとおりです:
CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <表名> FOR EACH Row<触发器主体>
文法分析
トリガー名
はトリガー名を指し、データベース内で一意です (特定のデータベースで作成された場合、データベース名は)
INSERT | UPDATE | DELETE
はトリガー イベントを表し、トリガーをアクティブにするステートメントのタイプを指定するために使用されます
INSERT : 新しい行を挿入します。テーブルが削除されるとトリガーがアクティブになります。
DELETE: テーブルからデータの行が削除されると、トリガーがアクティブになります。
UPDATE: データの行がテーブルから削除されると、トリガーがアクティブになります。テーブル内のデータが変更されました
BEFORE | AFTER
トリガーが起動された瞬間。トリガーが起動されたステートメントの前か後に起動されたかを示します。新しいデータが条件を満たしていることを確認する場合は、BEFORE オプションを使用します。トリガーをアクティブにするステートメントの実行後に複数の変更を完了する場合は、通常、AFTER オプションを使用します。
テーブル名
トリガーに関連付けられたテーブル名。このテーブルは永続テーブルである必要があります。トリガーを一時テーブルまたはビューに関連付けることはできません。テーブル上でトリガー イベントが発生すると、トリガーがアクティブになります。同じテーブルに、同じ起動時間とイベントを持つ 2 つのトリガーを含めることはできません。
トリガー本体
トリガー アクション本体には、トリガーがアクティブ化されたときに実行される MySQL ステートメントが含まれます。複数のステートメントを実行する場合は、BEGIN…END 複合ステートメント構造を使用できます。
FOR EACH ROW
は行レベルのトリガーを指し、トリガー イベントの影響を受ける行ごとにトリガー アクションをアクティブにする必要があります。
注: 同じテーブル内の同じトリガー時間を持つ同じトリガー イベントに対して定義できるトリガーは 1 つだけです。トリガーは永続テーブルにのみ作成でき、一時テーブルには作成できません。
例: double_salary という名前のトリガーを作成します
double_salary -> AFTER INSERT ON tb_emp1 -> FOR EACH ROW -> INSERT INTO tb_emp2 -> VALUES (NEW.id,NEW.name,deptId,2*NEW.salary); Query OK, 0 rows affected (0.25 sec)
上記のコードの意味は、double_salary のトリガーを作成することであり、トリガー条件は After です。データ テーブル tb_emp1 にデータを挿入し、同じデータをデータ テーブル tb_emp2 に挿入すると、給与は tb_emp1 に新しく挿入された給与フィールドの値の 2 倍になります。
要約: 以上がこの記事の全内容です。皆様のお役に立てれば幸いです。
以上がmysqlでトリガーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。