Перезапись значения в переменной - MySQL

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. SET @changed = '';
  2. if (@changed='')
  3. SET @changed = now();
  4. end if;
  5. SELECT @changed;
Выдаёт ошибку
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if (@changed='') SET @changed = now()' at line 1
Чего ему не нравится?

Решение задачи: «Перезапись значения в переменной»

textual
Листинг программы
  1. DROP TRIGGER IF EXISTS  `bl_phones_update`;
  2. delimiter ^^
  3. CREATE TRIGGER `bl_phones_update` AFTER UPDATE ON `bl_phones`
  4. FOR EACH ROW BEGIN
  5. SET @changes = '';
  6. if (old.`phone`<>new.`phone`)
  7.     SET @changes = 'hhh';
  8. end if;
  9. insert into `logs`
  10. (`user`,`time`,`data_table`,`data_id`,`change_type`,`changes`)
  11. values (
  12. (select `user_id` from `users` where `connect_id`=CONNECTION_ID()),
  13. UNIX_TIMESTAMP(),
  14. 'bl_phones',
  15. new.`id`,
  16. 'U',
  17. concat('{',@changes,'}')
  18. );
  19. END^^
  20. delimiter ;

Объяснение кода листинга программы

  1. Удаление существующего триггера с именем bl_phones_update, если он существует.
  2. Установка разделителя для оператора CREATE TRIGGER на символ ^^.
  3. Создание триггера с именем bl_phones_update, который активируется после каждого обновления записи в таблице bl_phones.
  4. Установка переменной @changes равной пустой строке.
  5. Проверка, было ли изменено поле phone в обновленной записи. Если да, то переменной @changes присваивается значение 'hhh'.
  6. Вставка записи в таблицу logs, содержащей информацию о пользователе, времени, таблице, идентификаторе записи и типе изменения, а также значение переменной @changes, представленное в виде строки JSON.
  7. Установка разделителя для оператора DELIMITER на символ ;.
  8. Установка значения переменной @changes равным пустой строке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут