在MySQL中,如何在INSERT语句中计算列?

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

显然,我可以通过查询获取计数并插入它来完成此操作,但这样做更好。

3个回答

6

当表格通过插入、更新或删除操作发生变化时,触发器是注释数据的最佳工具。

为了自动设置日志中新行的日期列为当前日期,您需要创建一个类似于以下内容的触发器:

create trigger log_date before insert on log 
for each row begin
   set new.date = current_date()
end;

0

你一定要声明要插入什么。可以使用INSERT ... SELECT语句来实现。

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

这应该向日志表中插入一行新记录,包含今天的日期和 foo 表中的行数。(假设 foo 表有一个 id 列.. 使用主键或另一个索引列)


-1

为什么不使用information_schema.TABLES呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接