mysql 中 INSERT 语句中的计算列

Calculated columns in mysql on INSERT statements

提问人:SCdF 提问时间:9/5/2008 最后编辑:OliSCdF 更新时间:4/25/2013 访问量:4066

问:

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

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

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

SQL MySQL 数据库

评论


答:

0赞 Thomas Watnedal 9/5/2008 #1

您肯定必须声明要插入的内容。这应该可以通过使用 INSERT ...SELECT 语句。

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

它应该在日志表中插入一个新行,其中包含今天的日期和 foo 表中的行数。(假设 foo 表有一个 id 列。使用主键或其他索引列)

6赞 Joe Mahoney 9/14/2008 #2

触发器是在通过插入、更新或删除更改表时对数据进行注释的最佳工具。

若要使用当前日期自动设置日志中新行的日期列,请创建一个触发器,如下所示:

create trigger log_date before insert on log 
for each row begin
   set new.date = current_date()
end;
-1赞 Federico Razzoli 4/25/2013 #3

你为什么不使用information_schema。表?