mysql:14395
From: chuuken kenkou <chuuken kenkou <ken_ken_1962@xxxxxxxxxx>>
Date: Fri, 22 Feb 2008 17:53:32 +0900
Subject: [mysql 14395] Re: データ更新の履歴
追記です。 DELETE前のデータなら、下記の例と同様、DELETEトリガでOLDで列名を参照してください。 > Date: Fri, 22 Feb 2008 17:47:39 +0900 > From: ken_ken_1962@xxxxxxxxxx > Subject: [mysql 14394] Re: データ更新の履歴 > To: ml@xxxxxxxxxx > > > 更新前のデータを履歴に残したいのだから、「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 > _________________________________________________________________ 栄養不足?MSN相談箱で「サプリメント」について知ろう! http://questionbox.msn.co.jp/search.php3?start=0&pt=0&qt=all&k=pbWl16XqpeGl86XI
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@]