Сначала вам нужно создать блоки кода для любого кода, который вы отображаете в своем вопросе / ответе, выделив строки кода и нажав ctrl-k
. Вам потребуется триггер, который изменяет значение даты встрока текущей даты с использованием функции CURDATE ().ПЕРЕД ОБНОВЛЕНИЕМ просто означает применение текущего блока, заключенного в «BEGIN ... END», прежде чем MySQL сделает фактический вызов обновления.Вы получаете доступ к строке, которая будет обновлена с помощью NEW. <field>
.Чтобы сохранить значение в определенном кортеже, используйте оператор SELECT ... INTO ....
DELIMITER $$
CREATE TRIGGER trigger_name
BEFORE UPDATE ON table_name
FOR EACH ROW
BEGIN
SELECT CURDATE() INTO NEW.`col4(date)`;
END $$
DELIMITER ;
Для получения дополнительной информации см .: https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html https://dev.mysql.com/doc/refman/8.0/en/ansi-diff-select-into-table.html
ОБНОВЛЕНИЕ: ВЫ НЕ МОЖЕТЕ ОБНОВИТЬ В СООТВЕТСТВИИ С ТРИГГЕРОМ ОБНОВЛЕНИЯ, MySQL не предотвращает сам вызов триггера обновления и не предотвращает проблемы взаимоблокировки, поэтому вы не можете использовать это.Необходимо использовать метод ниже.
Используя метод, описанный в комментариях (если ваша версия это поддерживает):
CREATE TABLE last_mod (
last_modified_date DATE NOT NULL,
PRIMARY KEY (last_modified_date)
)
CREATE TABLE IF NOT EXISTS my_table (
my_date DATETIME NOT NULL,
INDEX par (my_date),
FOREIGN KEY (my_date) REFERENCES last_mod(mast_modified_date) ON UPDATE CASCADE
);
DELIMITER $$
CREATE TRIGGER trigger_name
BEFORE UPDATE ON my_table
FOR EACH ROW
BEGIN
UPDATE last_mod SET last_modified_date = CURDATE();
END $$
DELIMITER ;