mysql:14394
From: chuuken kenkou <chuuken kenkou <ken_ken_1962@xxxxxxxxxx>>
Date: Fri, 22 Feb 2008 17:47:39 +0900
Subject: [mysql 14394] Re: データ更新の履歴
更新前のデータを履歴に残したいのだから、「BEFORE INSERT ON t」でなく、「BEFORE UPDATE ON t」になります。 更新前データは、「OLD.列名」で参照でき、更新後データは、「NEW.列名」で参照できます。 -- 表定義例 create table tbl1 (clm1 int primary key, clm2 int, clm3 varchar(10)); create table log_tbl1 (clm1 int, clm2 int, clm3 varchar(10), upd_user varchar(30), tmst timestamp); -- トリガ定義例 delimiter // -- 終端記号を変更 create trigger upd_tbl1 before update on tbl1 for each row begin insert into log_tbl1(clm1,clm2,clm3,upd_user) values(old.clm1,old.clm2,old.clm3,current_user); end ; // delimiter ; -- 終端記号を元に戻す -- テスト用データ格納例 insert into tbl1 values(1,0,'a'); insert into tbl1 values(2,0,'b'); insert into tbl1 values(3,0,'c'); insert into tbl1 values(4,0,'d'); insert into tbl1 values(5,0,'e'); -- 更新してみる update tbl1 set clm2=clm2+1,clm3=concat(clm3,'x') where clm1=3; -- トリガの結果確認 select * from log_tbl1; > Date: Fri, 22 Feb 2008 17:27:16 +0900 > From: alex_backspin@xxxxxxxxxx > Subject: [mysql 14393] Re: データ更新の履歴 > To: ml@xxxxxxxxxx > > 近藤さま、 > > 解答ありがとうございます。 > > バージョンは5.0.22で、ubuntu 6.06.1 LTS にて使っています。 > > トリガーを使用するとき、 > > mysql> CREATE TRIGGER t_bi > -> BEFORE INSERT ON t > -> FOR EACH ROW > -> INSERT INTO bk_table value ・・・?; > > 更新前のデータを別のテーブルにインサートするには、上記のような形となるの > でしょうか? > このとき、INSERT構文をどのように書けばよいのかご教授頂けませんでしょうか? > > > nobu wrote: >> 近藤です。 >> >> MySQLのバージョンはいくつでしょうか? >> MySQLに限ったことではありませんが、そのような要件の際に私はトリガー >> を使用しています。MySQL5.0以上であればトリガーが使えたかと思います。 >> >> 以上 >> >> >> >> Alex さんは書きました: >>> こんにちは、ALEXです。 >>> >>> MySQLの任意のテーブル内のでデータを更新したとき、更新前のデータを自動的 >>> にどこかに保管するような仕組みはないものでしょうか。 >>> データが変更されたときの履歴を取りたいのが目的です。 >>> よろしくお願い致します。 >>> >>> >> >> >> > _________________________________________________________________ 「脳内メーカー」の次は「鞄の中身メーカー」? Live Search で検索! http://search.msn.co.jp/results.aspx?q=%E9%9E%84%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%83%A1%E3%83%BC%E3%82%AB%E3%83%BC&FORM=MGCEAA
14391 2008-02-22 15:18 [Alex <alex_backspin@] データ更新の履歴 14392 2008-02-22 15:48 ┗[nobu <mininobu@xxxxx] 14393 2008-02-22 17:27 ┗[Alex <alex_backspin@] -> 14394 2008-02-22 17:47 ┗[chuuken kenkou <ken_] 14395 2008-02-22 17:53 ┗[chuuken kenkou <ken_] 14397 2008-02-26 08:53 ┗[Alex <alex_backspin@]