我想在现有的mysql表中添加一个新列,其默认值为random timestamp。随机时间戳记应介于(现在+ 3小时)和(现在+3.5小时)之间。我在下面的sql命令中使用过,并且显示错误:
alter table latency_adjustment_rules
add column expiration_timestamp TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) + FLOOR(RAND() * 3600)) + 10800
错误:
错误1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第1行的'+ FLOOR(RAND()* 3600))+ 10800'附近使用正确的语法
有人可以建议我的mysql语句出什么问题吗?
答案 0 :(得分:1)
这是在插入时插入TRIGGER
的方式:
DELIMITER \\
CREATE TRIGGER latency_adjust
BEFORE INSERT ON latency_adjustment_rules
FOR EACH ROW
BEGIN
IF NEW.expiration_timestamp IS NULL THEN
SET NEW.expiration_timestamp = NOW() + INTERVAL (FLOOR(RAND() * 3600) + 10800) SECOND;
END IF;
END\\
我在rextester上创建了一个小型演示示例。
答案 1 :(得分:0)
您不能以这种方式定义默认值。最好的办法是改用TRIGGER。请查看手册中的示例。
您还需要检查如何指定时间间隔。您可能想要使用Unix时间戳(MySQL时间戳位于以前的2018-10-10 23:14:37中,并且无法通过添加秒来递增,因此您需要使用DATE_ADD)