MySQL - прекратить обновление столбца DEFAULT CURRENT TIMESTAMP - PullRequest
0 голосов
/ 20 ноября 2018

В моей базе данных есть два столбца даты и времени: inserted и updated

inserted timestamp DEFAULT CURRENT_TIMESTAMP 
updated   timestamp -------------------------

Первичный столбец - это идентификатор.

Я запускаю команду SQL:

REPLACE INTO TABLE1 (id,name,updated) VALUES ('1','test1',NOW()) 

И это нормально: вставленный столбец получает текущее время после первого обновленного столбца INSERT, также устанавливается текущее время, поскольку оно установлено в команде REPLACE.

Если я запускаю вторую команду для обновления имени, тогдаобновленный столбец обновляется должным образом, но также обновляется и столбец INSERTED.Я не хочу этого!!!

REPLACE INTO TABLE1 (id,name,updated) VALUES ('1','test2',NOW()) 

Как остановить автоматическое обновление столбца inserted после выполнения команды REPLACE?Какие изменения в столбце INSERTED в базе данных MySQL должны быть сделаны?Я должен использовать REPLACE sql или любой синоним для моих нужд.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Если вы хотите обновить поле без ввода SQL-команды.Вам нужно создать этот столбец следующим образом:

`inserted` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Но этот работает для операций обновления, а не операций замены.

REPLACE работает точно так же, как INSERT, за исключением того, что для старой строкив таблице то же значение, что и у новой строки для PRIMARY KEY или UNIQUE индекса, старая строка удаляется перед вставкой новой строки.См. Раздел 13.2.6, «Синтаксис INSERT».

Подробные объяснения здесь, см .: https://dev.mysql.com/doc/refman/8.0/en/replace.html

0 голосов
/ 20 ноября 2018

replace удаляет старую запись и вставляет новую.

Если вы хотите обновить существующую запись, используйте update вместо:

UPDATE TABLE1 
SET name = 'test2',
    updated = now()
where id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...