2008-09-05 4 views
2

他のテーブル(実際には何らかの数学/文字列連結など)の日付とカラム数を記録するテーブルを作成したいとします。INSERT文のmysqlで計算されたカラム

CREATE TABLE `log` (
`id` INTEGER NOT NULL AUTO_INCREMENT , 
`date` DATETIME NOT NULL , 
`count` INTEGER NOT NULL , 
PRIMARY KEY (`id`) 
); 

私が挿入を行うたびにカウントの列を計算することは可能ですか?

INSERT INTO log (date='foo'); 

などがあり、mysqlによって計算された数があります。

明らかに、カウントを取得して挿入するためにクエリを実行することで、自分自身で行うことができますが、これは良い方法です。

答えて

5

トリガーは、テーブルは、挿入、更新、または削除することによって変更されたときにデータに注釈を付けるための最良のツールです。

create trigger log_date before insert on log 
for each row begin 
    set new.date = current_date() 
end; 
0

あなたは間違いなく何を挿入するかを宣言する必要があります。これはINSERT ... SELECTステートメントを使用することで可能になります。

INSERT INTO log (date, count) 
    SELECT DATE() as date, count(id) as count 
    from foo; 

fooテーブルの今日の日付と行数を含む、新しい行をログテーブルに挿入する必要があります。 (FOOテーブルと仮定すると、主キーまたは他のインデックス付き列を使用.. id列を有する)

-1

は、なぜあなたはINFORMATION_SCHEMA.TABLESを使用していない:

は自動的にあなたがこのような何かを見てトリガーを作成したい、現在の日付のログに新しい行の日付の列を設定するには?