Mysql update auto count по количеству обновлений строк

0

Мне интересно, возможно ли автоматическое обновление некоторого числа (+1) в строке, когда эта строка попадает в обновление.

Аналогичная функция, например, автоинкремент новой записи ID. Но в зависимости от изменений строк.

Data sample
id ; column1; n_changes
1  ; pedro  ; 1

И когда я update table set column1 = 'hugo' WHERE id = 1

Data sample
id ; column1; n_changes
1  ; hugo   ; 2

Конечно, первый ответ coul'd be-put update этого числа в запрос, но у меня есть причина попробовать его решить на db self. Я использую Mysql 5.6 или MariaDB.

Теги:
mariadb

2 ответа

0
Лучший ответ

Для этого типа действия триггер обычно рекомендуется, если вы хотите, чтобы он выполнялся автоматически.

Однако это легко включить в само update:

update table
    set column1 = 'hugo',
        n_changes = n_changes + 1
    where id = 1 and column1 <> 'hugo';

Обратите внимание на включение column1 <> 'hugo' в where. MySQL фактически не обновил бы запись, если значение не изменится. Я предполагаю, что если значение остается неизменным, вы также не хотите увеличивать счетчик.

РЕДАКТИРОВАТЬ:

Триггер довольно прост:

DELIMITER $$

CREATE TRIGGER ins_sum BEFORE UPDATE ON t
FOR EACH ROW
BEGIN
    SET new.n_changes = new.n_changes + 1;
END;

DELIMITER ;

Не забудьте сделать n_changes NOT NULL со значением по умолчанию 0.

  • 0
    Да, я знал, но, конкретно, я стараюсь избегать любых модификаций приложения. Считать меньше зла. Насколько сложен триггер настройки для моего сценария?
  • 0
    Отлично, большое спасибо Гордон
0

Просто увеличивайте столбец n_changes при обновлении:

UPDATE table
SET
    column1 = 'hugo',
    n_changes = n_changes + 1
WHERE id = 1;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню