概念: トリガーは、データの整合性を確保するために SQL サーバーによってプログラマやデータ アナリストに提供されるメソッドです。これはテーブル イベントに関連する特別なストアド プロシージャです。その実行はプログラムによって呼び出されるわけではなく、プログラムによって呼び出されるものではありません。手動で開始されますが、イベントによってトリガーされます。たとえば、テーブルの操作 (挿入、削除、更新) が行われると、その実行がアクティブ化されます。トリガーは、データ整合性の制約とビジネス ルールを強制するためによく使用されます。データ ディクショナリ DBA_TRIGGERS および USER_TRIGGERS をクエリすると、トリガー関連の情報を取得できます。 SQL3 トリガーは、データベースを変更するためにシステムによって自動的に実行できるステートメントです。
平たく言えば、トリガーとはトリガーデバイスのことであり、デバイス内で操作が行われます。特定の条件に達すると、デバイスがトリガーされ、デバイス内に保存されているアクションが実行されます。
トリガー インスタンスの作成 (キーワード: トリガー)
例 1: ユーザー テーブル (ユーザー ID、ユーザー名) を作成します。トリガーを作成します (ユーザー テーブルにデータが挿入されると、グローバルに一意の ID が自動的に生成されます)
最初にユーザー テーブルを作成します
create table user( id int PRIMARY KEY, name varchar(20) );
Create aトリガー
-- 建立触发器名为tt create TRIGGER tt -- 触发条件,向user表中插入数据时启动触发器 BEFORE insert on user -- 检查表中每一行,对新插入的数据进行操作 for EACH ROW -- 执行操作 BEGIN set new.id=UUID(); END
作成したばかりのトリガー (コードを参照して、現在のデータベースにあるすべてのトリガーのトリガーを表示します)
効果: テーブルに 3 人のユーザー名を挿入します。 、自動的に 3 つの ID を生成します
insert user(name) VALUE('张三'),('李四'),('王五')
例 2: 注文テーブル DD (注文 ID、商品名、ユーザー ID) を作成し、トリガー tq1 (削除されたとき) を作成しますがユーザーの場合、ユーザーのオーダーも削除されます) テーブルの作成
create table DD( ddid int PRIMARY KEY, ddname VARCHAR(20), userid VARCHAR(50) )
トリガーの作成
delimiter $ -- 建立触发器名为tq create TRIGGER tq1 -- 触发条件,再dd表删除数据之后启动触发器 AFTER DELETE on user -- 检查表中每一行,对新插入的数据进行操作 for EACH ROW -- 执行操作 BEGIN DELETE FROM dd WHERE old.id=userid; END $ delimiter ;
追加するには2 つのデータをテーブルに追加します
効果: user テーブル内のユーザーを削除すると、dd テーブル内のレコードも削除されます。Zhang San を削除します
delete from user WHERE name='张三'
上記の例 2 でも同じことを実現できます。外部キーが使用されている場合は効果があるということは、外部キーで実行できることはトリガーで実行でき、外部キーで実行できないトリガーでも実行できるという意味ですか?
外部キーと比較して、トリガーは柔軟性が高く、より多くの機能を実行でき、ある程度まで外部キーを置き換えたり、外部キーの機能を実現したりできます。
トリガーを使用して参照整合性を強制し、複数のテーブルで行が追加、更新、または削除されたときに、これらのテーブル間に定義された関係が確実に維持されるようにすることができます。主キーと外部キーの制約を定義することは、参照整合性を確保する最良の方法です。データベース内の関係図を使用すると、テーブル間の関係を確立することで外部キー制約を自動的に作成できます。
概要: トリガーは特定のタイミングで外部キーを置き換えることができますが、すべての状況で置き換えられるわけではありません。外部キーとトリガーも一緒に使用できます
以上がMySQL データベース トリガーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。