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 回答