假设我想要一个表记录日期和其他表中的列数(或者实际上任何类型的数学/字符串连续等)。
CREATE TABLE `log` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`date` DATETIME NOT NULL ,
`count` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);
每当我插入时,是否可以为我计算计数列?
e.g。做类似的事情:
INSERT INTO log (date='foo');
并计算由mysql计算的数。
显然,我可以通过查询获取计数并插入它来自己完成,但这会更好。
答案 0 :(得分:6)
当通过插入,更新或删除更改表时,触发器是用于注释数据的最佳工具。
要使用当前日期自动设置日志中新行的日期列,您需要创建一个如下所示的触发器:
create trigger log_date before insert on log
for each row begin
set new.date = current_date()
end;
答案 1 :(得分:0)
你肯定要声明要插入什么。这应该可以使用INSERT ... SELECT语句。
INSERT INTO log (date, count)
SELECT DATE() as date, count(id) as count
from foo;
应该在日志表中插入一个新行,其中包含今天的日期和foo表中的行数。 (假设foo表有一个id列。使用主键或另一个索引列)
答案 2 :(得分:-1)
为什么不使用information_schema.TABLES?