MySQL last_modified столбец, который игнорирует обновления для указанного c столбца? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть столбец updated_at, который обновляет отметку времени при каждом изменении строки. Однако я хотел бы, чтобы он игнорировал изменения, внесенные в указанный столбец c, views. Это возможно? Столбец представлений постоянно обновляется и используется в качестве демонстрации, чтобы увидеть, сколько раз строка была публично просмотрена.

Вот пример таблицы;

CREATE TABLE orders(
  id INT NOT NULL AUTO_INCREMENT,
  user_id INT NULL,
  views INT NULL,
  amount FLOAT NULL,
  updated_at TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW(),
  PRIMARY KEY(id)
);

У меня есть скрипт, который выполняет: views = (views+1) по существу, который затем вызывает updated_at для этой строки.

Можно ли сохранить updated_at, игнорируя изменения, внесенные в столбец views?

1 Ответ

1 голос
/ 03 апреля 2020

сделать пользовательский триггер с условием - простое решение для этой проблемы, удалите ON UPDATE NOW () и создайте триггер для обновления этого столбца, если нет просмотра изменений

проверьте столбцы с OLD.yourcolumn и NEW. yourcolumn (извините, мне лень писать полное решение)

операторы помогут https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html

DELIMITER //
CREATE TRIGGER customTrigger AFTER UPDATE ON orders
FOR EACH ROW
BEGIN
   IF (conditons) THEN
      --type your statements here
   END IF;
END;//
DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...