MySQL при обновлении CURRENT_TIMESTAMP сохраняет одинаковое значение для всех записей - PullRequest
0 голосов
/ 09 октября 2019

У меня есть таблица с именем test_table, как показано ниже: https://ibb.co/QN8f328 Я установил для столбца updated_dt для события обновления CURRENT_TIMESTAMP.

Но когда новые строки вставляются в таблицузначение столбца updated_dt не изменяется, а не значение CURRENT_TIMESTAMP, например https://ibb.co/Jvb7zcw

Что пошло не так? Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Когда вы обновляете всю таблицу, в которой меньше записей, обновление будет происходить за доли секунды.

Вот почему вы видите одно и то же значение date_time в updated_dt для всех строк.

Если вы попытаетесь обновить вручную таблицу,

, например:

Запрос:

UPDATE test_table 
SET request_status = 'TEST'
WHERE id = 193;

Затем вы можете увидеть изменения в столбце updated_dt, который будет вашим current_timestamp.

Но когда в таблицу вставляются новые строки, значение столбца updated_dt не изменяется и не изменяется как значение CURRENT_TIMESTAMP

Это потому, что вы установили current_timestamp для обоих created_dt &updated_dt,

Так что в основном, когда вы вставляете, он будет хранить CURRENT_TIMESTAMP в обоих столбцах. А теперь, когда вы обновите эту строку, изменится только столбец updated_dt.

Опции:

Есть еще одна опция NULL ON UPDATE CURRENT_TIMESTAMP. Вы можете установить это как значение по умолчанию в вашем столбце updated_dt.

Что он делает, при вставке новых записей в столбец test_table only created_dt имеет значение current_timestamp и updated_dt будет NULL. После обновления столбца вы можете увидеть current_timestamp в updated_dt.

0 голосов
/ 09 октября 2019

Что если вы удалите

CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

, измените на

CURRENT_TIMESTAMP

и используйте запрос:

UPDATE table_name
SET column1 = value1, updated_dt = now(), ...

только предложение: D

...