You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中ON UPDATE CURRENT_TIMESTAMP修改布尔/枚举字段时不更新的问题求助

MySQL中ON UPDATE CURRENT_TIMESTAMP修改布尔/枚举字段时不更新的问题求助

各位大佬好,我碰到了一个MySQL的诡异问题,想请大家帮忙分析下原因:

我创建了这样一张users表:

CREATE TABLE `users` (
`id` varchar(36) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'uuid-will-be-generated',
`createdAt` timestamp NOT NULL DEFAULT (now()),
`updatedAt` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
`username` varchar(60) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`email` varchar(256) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`realName` varchar(60) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`password` varchar(256) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'no-password-specified',
`passwordType` enum('bcrypt') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'bcrypt',
`useAsDisplayName` enum('username','email','realName') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'username',
`admin` tinyint(1) NOT NULL DEFAULT '0',
`developer` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `usernameIndex` (`username`),
UNIQUE KEY `emailIndex` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci

现在遇到的问题是:当我更新表中的varchar类型字段时,updatedAt字段会正常触发ON UPDATE CURRENT_TIMESTAMP自动更新;但如果我修改的是enum类型或者tinyint(1)(布尔类型)字段,哪怕确实把字段值改成了不同的内容,updatedAt也不会更新。我清楚如果更新的内容和原数据一致的话不会触发更新,但这次是确定修改了不同的值,仍然没有效果。我用的是MySQL 8.0.32版本,有没有大佬知道这是怎么回事呀?

备注:内容来源于stack exchange,提问作者user128638

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:24:37