| Bug #103228 | Error when UTC_TIMESTAMP set for ON UPDATE | ||
|---|---|---|---|
| Submitted: | 6 Apr 2021 17:46 | Modified: | 12 Feb 2022 2:17 | 
| Reporter: | John Carew | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: DDL | Severity: | S4 (Feature request) | 
| Version: | 8.0.23 | OS: | CentOS (8) | 
| Assigned to: | CPU Architecture: | x86 | |
   [6 Apr 2021 17:46]
   John Carew        
  
 
   [7 Apr 2021 7:38]
   MySQL Verification Team        
  Hello John Carew, Thank you for the report and test case. regards, Umesh
   [7 Apr 2021 7:44]
   MySQL Verification Team        
  - 8.0.23 IMHO if it allows for automatically initialization then and it should support for update also. Other than UTC_TIMESTAMP(), most of the synonyms listed here works - https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html Also, a doc bug as I see no mention of UTC_TIMESTAMP() in automatically initialization in above manual page. - CREATE TABLE `test_timestamp` ( `id` int NOT NULL AUTO_INCREMENT, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ALTER TABLE `test_timestamp` MODIFY COLUMN created DATETIME NOT NULL DEFAULT (UTC_TIMESTAMP()), MODIFY COLUMN modified DATETIME NOT NULL DEFAULT (UTC_TIMESTAMP()) ON UPDATE UTC_TIMESTAMP(); You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UTC_TIMESTAMP()' at line 3
   [7 Apr 2021 19:34]
   Roy Lyseng        
  Posted by developer: This does not seem to be a bug. Apparently, only CURRENT_TIMESTAMP can be specified with ON UPDATE. The manual specifies this in chapter "Automatic Initialization and Updating for TIMESTAMP and DATETIME" : "Use of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP is specific to TIMESTAMP and DATETIME. The DEFAULT clause also can be used to specify a constant (nonautomatic) default value (for example, DEFAULT 0 or DEFAULT '2000-01-01 00:00:00')." But there seems to be something missing from documentation. This chapter only mentions that constant values and CURRENT_TIMESTAMP can be used, but DEFAULT has been extended beyond that. In addition, it seems that the chapter on CREATE TABLE lacks documentation for the ON UPDATE clause.
   [7 Apr 2021 19:40]
   John Carew        
  So this would then be a feature request to allow ON UPDATE work life DEFAULT, as we need UTC times when things are modified.
   [12 Feb 2022 2:17]
   John Carew        
  We're now 5 releases later, any news on this being implemented?
   [23 Mar 2022 7:12]
   MySQL Verification Team        
  Bug #106805 marked as duplicate of this one.
   [2 Aug 2023 14:39]
   Dane Gardow        
  When is this bug going to be fixed?
   [16 Nov 2023 8:48]
   Kaja Mohideen        
  I understand that ON UPDATE is specific to datetime datatype columns. And, if that's the case - it should support utc_timestamp and current_timestamp - as the choice of using TZ is upto the 'application' and that need not align with where the DB server is running. So, this is a defect - isn't it?

