mysql 表 UNIX时间戳 当前时间,mysql 错误1193(HY000):创建触发器时出现未知系统变量


本文介绍了是否可以创建一个在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触发

, ,

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注