MySQLアドバンスド-トリガ
1紹介
トリガは、テーブルに関連するデータベース・オブジェクトです.insert/update/deleteの前または後に、トリガで定義されたSQL文のセットがトリガされ、実行されます.(JSのようなイベント)フリップフロップのこのような特性は、データベース側でデータの整合性、ログ記録、データ検証などの操作を確保するのに役立ちます.別名OLDとNEWを使用して、トリガで変化したレコード内容を参照します.これは他のデータベースと似ています.トリガはロー・レベルのトリガのみをサポートし、文レベルのトリガはサポートされません.
トリガのタイプ
NEWとOLDの使用
INSERT型トリガ
NEWは、データが追加または追加されることを示す
UPDATE型トリガ
OLDは修正前のデータ、NEWは修正後のデータ
DELETE型トリガ
OLDは、削除するデータまたはデータを表す
2トリガの作成
構文:
例
需要
まず、ログ・テーブルを作成します.
Insert型トリガを作成し、データ挿入時のログ記録を完了します.
update型トリガを作成し、データ更新時のログ記録を完了します.
delete行のトリガを作成し、データの削除時のログ記録を完了します.
テスト:
3トリガの削除
構文:
schema_が指定されていない場合name、デフォルトは現在のデータベースです.
4トリガーの表示
SHOW TRIGGERSコマンドを実行することで、トリガの状態や構文などの情報を表示できます.構文:
トリガは、テーブルに関連するデータベース・オブジェクトです.insert/update/deleteの前または後に、トリガで定義されたSQL文のセットがトリガされ、実行されます.(JSのようなイベント)フリップフロップのこのような特性は、データベース側でデータの整合性、ログ記録、データ検証などの操作を確保するのに役立ちます.別名OLDとNEWを使用して、トリガで変化したレコード内容を参照します.これは他のデータベースと似ています.トリガはロー・レベルのトリガのみをサポートし、文レベルのトリガはサポートされません.
トリガのタイプ
NEWとOLDの使用
INSERT型トリガ
NEWは、データが追加または追加されることを示す
UPDATE型トリガ
OLDは修正前のデータ、NEWは修正後のデータ
DELETE型トリガ
OLDは、削除するデータまたはデータを表す
2トリガの作成
構文:
create trigger trigger_name
before/after insert/update/delete
on tbl_name
[ for each row ] --
begin
trigger_stmt ;
end;
例
需要
emp , , , ;
まず、ログ・テーブルを作成します.
create table emp_logs(
id int(11) not null auto_increment,
operation varchar(20) not null comment ' , insert/update/delete',
operate_time datetime not null comment ' ',
operate_id int(11) not null comment ' ID',
operate_params varchar(500) comment ' ',
primary key(`id`)
)engine=innodb default charset=utf8;
Insert型トリガを作成し、データ挿入時のログ記録を完了します.
DELIMITER $
create trigger emp_logs_insert_trigger
after insert
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'insert',now(),new.id,concat(' (id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')'));
end $
DELIMITER ;
update型トリガを作成し、データ更新時のログ記録を完了します.
DELIMITER $
create trigger emp_logs_update_trigger
after update
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'update',now(),new.id,concat(' (id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,') , (id',new.id, 'name:',new.name,', age:',new.age,', salary:',new.salary,')'));
end $
DELIMITER ;
delete行のトリガを作成し、データの削除時のログ記録を完了します.
DELIMITER $
create trigger emp_logs_delete_trigger
after delete
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'delete',now(),old.id,concat(' (id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')'));
end $
DELIMITER ;
テスト:
insert into emp(id,name,age,salary) values(null, ' ',30,3500);
insert into emp(id,name,age,salary) values(null, ' ',33,3200);
update emp set age = 39 where id = 3;
delete from emp where id = 5;
3トリガの削除
構文:
drop trigger [schema_name.]trigger_name
schema_が指定されていない場合name、デフォルトは現在のデータベースです.
4トリガーの表示
SHOW TRIGGERSコマンドを実行することで、トリガの状態や構文などの情報を表示できます.構文:
show triggers ;