本文介绍了是否可以创建一个在MySQL中使用UNIX_TIMESTAMP默认值的列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!mysql 表 时间列 设置为 UNIX时间戳 时,不可以设置默认当前时间,要使用触发器
问题描述
我想这样做,但似乎MySQL不允许我。有没有这个问题的解决方案,或者我预计总是包括我的INSERT查询中的函数?
CREATE TABLE foo( created INT NOT NULL DEFAULT UNIX_TIMESTAMP() )
只能接受CURRENT_TIMESTAMP默认值的TIMESTAMP类型,但我想坚持在数据库中使用纪元时间。
解决方法
TIMESTAMP
数据类型,它实际上是将时期时间存储在数据库中。因此,您只需使用默认值为 CURRENT_TIMESTAMP
的 TIMESTAMP
列,并应用 UNIX_TIMESTAMP )
如果你想显示为一个int,但是,如果你真的想要列的数据类型为 INT
您可以使用R. Bemrose的建议,并通过触发器设置
表格如下:
创建触发器:
delimiter $$
CREATE TRIGGER setInsertTime
BEFORE INSERT ON BookRecod
FOR EACH ROW
BEGIN
IF BookRecod.vTime IS NULL THEN
SET BookRecod.vTime = unix_timestamp();
END IF;
END$$
DELIMITER ;
出现错误:1193 – Unknown system variable ‘vTime’
修改成插入后触发:
delimiter $$
Create trigger tsales after insert on BookRecod
for each row
update BookRecod
set vTime = unix_timestamp()
where id = BookRecod.id;
END$$
DELIMITER ;
顺利运行:
总结
mysql使用触发器可能有“错误1193(HY000):创建触发器时出现未知系统变量”错误,可以改成after触发