【问题标题】:Mysql Triggers for timestamps时间戳的Mysql触发器
【发布时间】:2016-06-28 10:43:01
【问题描述】:

我有一个包含几列的 mysql 表: id、开始时间(时间戳)、结束时间(时间戳)、状态。

我想添加触发器:

  • 在创建新条目时自动将时间戳设置为“开始时间”字段
  • 当对应行“status”设置为“CLOSED”时,自动将时间戳设置为“endtime”字段

mysql 新手,我很难声明这些触发器...

感谢您的帮助,

【问题讨论】:

  • 对于 1. 您可以使用默认值。对于 2,您需要一个触发器
  • 有什么困难?如果您不分享您的代码并解释您的确切问题,这不是问题,而是免费代码请求;-)
  • 关于您的第一个问题,请查看:stackoverflow.com/questions/10720486/…
  • 关于您的第二个问题,您可以使用:stackoverflow.com/questions/6296313/…(因为您的 new 状态(closed)与您的 不同旧的 一)。

标签: mysql triggers


【解决方案1】:

这是完整的解决方案: (供drupal使用)

触发器 1:

   $slqquery = 'CREATE TRIGGER `trigger_name` ';
   $slqquery .= 'BEFORE INSERT ON `table_name` ';
   $slqquery .= 'FOR EACH ROW BEGIN SET NEW.starttime=NOW(); END;';
   $query = db_query($slqquery);

触发器 2:

   $slqquery = 'CREATE TRIGGER `trigger_name` ';
   $slqquery .= 'BEFORE UPDATE ON `table_name` ';
   $slqquery .= 'FOR EACH ROW BEGIN ';
   $slqquery .= "IF (!(OLD.column_name <=> NEW.column_name) AND (NEW.column_name <=> 'WHATEVER')) THEN ";
   $slqquery .= 'SET NEW.endtime=NOW(); ';
   $slqquery .= 'END IF; END;';
   $query = db_query($slqquery);  

如果有帮助的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2014-09-30
    • 1970-01-01
    • 2019-03-08
    • 2011-01-21
    相关资源
    最近更新 更多