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
相关产品推荐
相关产品推荐

