INSERT语句中mysql中的计算列

时间:2008-09-05 07:15:28

标签: sql mysql database

假设我想要一个表记录日期和其他表中的列数(或者实际上任何类型的数学/字符串连续等)。

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计算的数。

显然,我可以通过查询获取计数并插入它来自己完成,但这会更好。

3 个答案:

答案 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?