Не работает ни один триггер в mysql

158
21 мая 2019, 09:50

Я добавляю триггеры в свою БД, далее пытаюсь выполнить запрос, запрос выполняется, а триггер нет. Привожу в пример один из созданных триггеров и запрос после которого он должен по идее срабатывать. Таблицы в MyISAM

update userStatus set idStatus = 333 where idStatus = 2;
Create trigger update_user_status_for_client after update on userStatus
For each row
Update Clients set status = NEW.idStatus where status = OLD. idStatus;

Результат show create table для таблиц:

userStatus

 'CREATE TABLE `userStatus` (
`idStatus` int(11) NOT NULL AUTO_INCREMENT, 
`title` varchar(45) NOT NULL, 
PRIMARY KEY (`idStatus`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8'
clients

 'CREATE TABLE `clients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Surname` varchar(255) NOT NULL,
`Name` varchar(255) NOT NULL,
`Middlename` varchar(255) NOT NULL,
`status` int(11) NOT NULL DEFAULT \'1\',
`gender` int(11) NOT NULL DEFAULT \'1\',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28571 DEFAULT CHARSET=utf8'
Answer 1

Возможные причины

Таблица не существует

В DDL:

CREATE TABLE `clients`

В триггере:

Update Clients

Таблицы различаются регистром символов. Для MySQL в среде Windows это не имеет значения. Для остальных систем - важно.

Ошибку не видно

Сразу после UPDATE-запроса смотрим show warnings;. Будут выведены ошибки и предупреждения.

+-------+------+------------------------------------+
| Level | Code | Message                            |
+-------+------+------------------------------------+
| Error | 1146 | Table 'test.Clients' doesn't exist |
+-------+------+------------------------------------+
Изучение DDL

Смотрим show create table.

Если размерность status меньше, чем idStatus, запрос сработает, но триггер - нет. Это не фатальная ошибка. Следует использовать show warnings; для диагностики такой проблемы.

Невнимательность

При дописывании оператора explain UPDATE-запрос не выполняется.

Для диагностики смотрим количество затронутых строк. Если Query OK, 0 rows affected (0,00 sec), запрос не внес изменения.

READ ALSO
какой придумать SQL запрос

какой придумать SQL запрос

Есть вот такая табличкаНужно придумать запрос, при котором "пользователь" вводит ингредиенты, и получает номер рецептов на которые есть ингредиенты...

158
Как работать с таблицей многие к многим?

Как работать с таблицей многие к многим?

База для фирмы сборки компьютеровЕсть 5 таблиц

146
как сделать группировку по дням mysql?

как сделать группировку по дням mysql?

Подскажите с запросом:

139