MySQL ON UPDATE CURRENT_TIMESTAMP不会在boolean / enum更改时更新

cpjpxq1n  于 2023-04-19  发布在  Mysql
关注(0)|答案(1)|浏览(146)

我有这张table:

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字段也会更新。但是如果我更新一个enum/boolean字段,它就不会更新。我知道如果更新中的数据相同,它就不会更新,但是数据不同,它就不会更新。使用MySQL 8.0.32。
有人有什么想法吗?

kmbjn2e3

kmbjn2e31#

原来是我的应用程序,而不是MySQL。我应该在较低的级别检查。

相关问题