[前][次][番号順一覧][スレッド一覧]

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@]