3

日付と他のテーブルの列数を記録するテーブルが必要だとしましょう(または、実際にはあらゆる種類の数学/文字列連結など)。

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によってカウントが計算されます。

明らかに、クエリを実行してカウントを取得して挿入することで自分で行うことができますが、これはより良いでしょう.

4

3 に答える 3

6

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

ログの新しい行の日付列を現在の日付で自動的に設定するには、次のようなトリガーを作成します。

create trigger log_date before insert on log 
for each row begin
   set new.date = current_date()
end;
于 2008-09-14T01:46:27.893 に答える
0

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

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

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

于 2008-09-05T07:30:22.653 に答える
-1

information_schema.TABLES を使用しないのはなぜですか?

于 2013-04-25T00:11:47.627 に答える