Перезапись значения в переменной - MySQL
Формулировка задачи:
Листинг программы
- SET @changed = '';
- if (@changed='')
- SET @changed = now();
- end if;
- 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
Листинг программы
- DROP TRIGGER IF EXISTS `bl_phones_update`;
- delimiter ^^
- CREATE TRIGGER `bl_phones_update` AFTER UPDATE ON `bl_phones`
- FOR EACH ROW BEGIN
- SET @changes = '';
- if (old.`phone`<>new.`phone`)
- SET @changes = 'hhh';
- end if;
- insert into `logs`
- (`user`,`time`,`data_table`,`data_id`,`change_type`,`changes`)
- values (
- (select `user_id` from `users` where `connect_id`=CONNECTION_ID()),
- UNIX_TIMESTAMP(),
- 'bl_phones',
- new.`id`,
- 'U',
- concat('{',@changes,'}')
- );
- END^^
- delimiter ;
Объяснение кода листинга программы
- Удаление существующего триггера с именем
bl_phones_update
, если он существует. - Установка разделителя для оператора
CREATE TRIGGER
на символ^^
. - Создание триггера с именем
bl_phones_update
, который активируется после каждого обновления записи в таблицеbl_phones
. - Установка переменной
@changes
равной пустой строке. - Проверка, было ли изменено поле
phone
в обновленной записи. Если да, то переменной@changes
присваивается значение'hhh'
. - Вставка записи в таблицу
logs
, содержащей информацию о пользователе, времени, таблице, идентификаторе записи и типе изменения, а также значение переменной@changes
, представленное в виде строки JSON. - Установка разделителя для оператора
DELIMITER
на символ;
. - Установка значения переменной
@changes
равным пустой строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д