Я добавляю триггеры в свою БД, далее пытаюсь выполнить запрос, запрос выполняется, а триггер нет. Привожу в пример один из созданных триггеров и запрос после которого он должен по идее срабатывать. Таблицы в 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'
Возможные причины
Таблица не существуетВ 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), запрос не внес изменения.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости