Я добавляю триггеры в свою БД, далее пытаюсь выполнить запрос, запрос выполняется, а триггер нет. Привожу в пример один из созданных триггеров и запрос после которого он должен по идее срабатывать. Таблицы в 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)
, запрос не внес изменения.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть вот такая табличкаНужно придумать запрос, при котором "пользователь" вводит ингредиенты, и получает номер рецептов на которые есть ингредиенты...