Mysql触发时间戳

时间:2016-06-28 10:43:01

标签: mysql triggers

我有一个包含多个列的mysql表: id,starttime(timestamp),endtime(timestamp),status。

我想将触发器添加到:

  • 在创建新条目时自动将时间戳设置为“starttime”字段
  • 当相应的行'status'设置为“CLOSED”时,
  • 自动将时间戳设置为'endtime'字段

mysql中的新手,我很难宣布这些触发器......

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

以下是完整的解决方案: (用于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);  

如果可以提供帮助。