職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

トリガ

2015年05月11日 | mySQL
トリガとは
テーブルに対してある処理が行われると、それが引き金に成ってあるコマンドが実行される仕組みの事。

■Aテーブルのレコードを削除すると、Bテーブルにコピーされるトリガ(tr1)を作成
mysql> DELIMITER //
mysql> CREATE TRIGGER tr1(トリガ名) BEFORE DELETE ON tb1 FOR EACH ROW
-> BEGIN
-> INSERT INTO tb1M VALUES(OLD.bang,OLD.nama,OLD.tosi);
-> END
-> //
Query OK, 0 rows affected (0.11 sec)

■コピーされるテーブルを作成
mysql> create table tb1M like tb1;
Query OK, 0 rows affected (0.47 sec)

■Aテーブルのレコードを削除
mysql> DELIMITER ;
mysql> DELETE FROM tb1;
Query OK, 5 rows affected (0.14 sec)
確認
mysql> select * from tb1;
Empty set (0.00 sec)

mysql> select * from tb1m;
+------+------+------+
| bang | nama | tosi |
+------+------+------+
| A101 | 佐藤 | 40 |
| A102 | 高橋 | 28 |
| A103 | 中川 | 20 |
| A104 | 渡辺 | 23 |
| A105 | 西沢 | 35 |
+------+------+------+
5 rows in set (0.00 sec)

■元に戻す
mysql> insert into tb1 select * from tb1M;
Query OK, 5 rows affected (0.05 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> select * from tb1;
+------+------+------+
| bang | nama | tosi |
+------+------+------+
| A101 | 佐藤 | 40 |
| A102 | 高橋 | 28 |
| A103 | 中川 | 20 |
| A104 | 渡辺 | 23 |
| A105 | 西沢 | 35 |
+------+------+------+
5 rows in set (0.00 sec)

■トリガ削除
mysql> drop trigger tr1;
Query OK, 0 rows affected (0.00 sec)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする