我们可以在创建表时使用dateadd函数吗?
CREATE TABLE test(
id INTEGER(16) NOT NULL AUTO_INCREMENT,
CONSTRAINT PRIMARY KEY (id),
controlstarttime DATETIME NOT NULL DEFAULT NOW(),
timeout DATETIME NOT NULL DEFAULT DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 10 SECOND)
)
我尝试了上面的查询,它给了我一个语法错误。我知道这可以使用触发器轻松完成。但我想知道为什么这个查询不起作用。有什么想法吗?
答案 0 :(得分:2)
MySQL中的DEFAULT值必须是常量。它们不能是函数或表达式(CURRENT_TIMESTAMP除外)。
来源:http://dev.mysql.com/doc/refman/5.6/en/data-type-defaults.html
答案 1 :(得分:1)
我认为不可能在mysql中创建默认间隔,但你可以创建一个触发器
CREATE TRIGGER settime
BEFORE INSERT on table1
FOR EACH ROW BEGIN
IF new.`date` is null THEN
SET new.`date` = DATE_ADD(NOW(), INTERVAL 10 SECOND);
END IF;
END;