无法使用 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())..'附近使用。 你试过“修改”而不是“改变”吗? 您的错误与 MariaDB10.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 函数添加更新事件的主要内容,如果未能解决你的问题,请参考以下文章
mysql 时间戳函数FROM_UNIXTIME和UNIX_TIMESTAMP函数的使用说明
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
等效于 H2 DB 的 UNIX_TIMESTAMP 函数?