【问题标题】:Calculated columns in mysql on INSERT statementsmysql 中 INSERT 语句中的计算列
【发布时间】:2010-09-07 21:43:25
【问题描述】:

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

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 database


    【解决方案1】:

    当表被插入、更新或删除更改时,触发器是注释数据的最佳工具。

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        为什么不使用 information_schema.TABLES?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-25
          • 2011-12-04
          • 2023-03-31
          • 1970-01-01
          • 2020-09-26
          • 2011-07-31
          • 1970-01-01
          相关资源
          最近更新 更多