提问人:SCdF 提问时间:9/5/2008 最后编辑:OliSCdF 更新时间:4/25/2013 访问量:4066
mysql 中 INSERT 语句中的计算列
Calculated columns in mysql on INSERT statements
问:
假设我想要一个表来记录日期和其他表中的列数(或者实际上任何类型的数学/字符串连接等)。
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计算计数。
显然,我可以通过执行查询来获取计数并插入它来自己完成,但这会更好。
答:
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。表?
评论