无法使用 unix_timestamp 函数添加更新事件

Posted

技术标签:

【中文标题】无法使用 unix_timestamp 函数添加更新事件【英文标题】:can't add on update event with unix_timestamp func 【发布时间】:2020-01-22 09:13:37 【问题描述】:

我有 10.3.9-MariaDB-1:10.3.9+maria~bionic 数据库服务器。在我的表配置文件中,我有一个带有默认 unix_timestamp() 的字段。但是当我尝试为更新事件添加这个函数时

 alter table profile change `updated_at` `updated_at` int(11) NOT NULL DEFAULT UNIX_TIMESTAMP() ON UPDATE UNIX_TIMESTAMP();

它给了我语法错误:

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“UNIX_TIMESTAMP()”附近使用的正确语法

【问题讨论】:

显示完整的错误信息 @Akina 一样。 "..在'(UNIX_TIMESTAMP())..'附近使用。 你试过“修改”而不是“改变”吗? 您的错误与 MariaDB 10.3.9 不一致。您确定您使用的不是早期版本吗? 你会笑的,但是 CREATE TABLE 的 documentation -> column definition 没有 ON UPDATE 的值 - 仅用于外键操作。 【参考方案1】:

查看 cmets。 我有两个可能的解释,一些好心人在 cmets 中给出了: 1) 我有不同版本的 mariadB 2) MariaDB 文档甚至没有表的更新触发器描述,所以如果你甚至可以为更新触发器添加 func ,我就没有。

【讨论】:

【参考方案2】:

我正在使用以下查询,它适用于 MariaDB 10.4:

ALTER TABLE testTable MODIFY COLUMN testCol TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

查看 mysql 文档: https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html

【讨论】:

以上是关于无法使用 unix_timestamp 函数添加更新事件的主要内容,如果未能解决你的问题,请参考以下文章

Hive unix_timestamp 函数计算不匹配

mysql 时间戳函数FROM_UNIXTIME和UNIX_TIMESTAMP函数的使用说明

解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别

等效于 H2 DB 的 UNIX_TIMESTAMP 函数?

Hive 的 unix_timestamp 和 from_unixtime 函数

hive 时间戳函数之unix_timestamp,from_unixtime