|
MySQL.RU - Webboard
Вернуться
ошибка 1442 (Игорь) 26/08/2008 - 02:10:27
From: Игорь - 26/08/2008 - 02:10:27
Subject:ошибка 1442
-----------------
ситуация такова:
Имеется 3 таблицы: "test" - таблица тестов, "question" - таблица вопросов, "test_question" - связующая таблица. И триггеры с ними связанные.
Проблема возникает при удалении записи из таблицы test.
CREATE TABLE test (
`id_test` int(10) unsigned NOT NULL auto_increment,
`test_level` enum('easy','normal','hard) NOT NULL,
`short_info` tinytext NOT NULL
PRIMARY KEY (`id_test`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
DROP TRIGGER IF EXISTS test_tr
CREATE TRIGGER test_tr BEFORE DELETE ON test
FOR EACH ROW DELETE question FROM question a, test_question b WHERE b.id_test = old.id_test AND a.id_question = b.id_question;
CREATE TABLE question (
`id_question` int(10) unsigned NOT NULL auto_increment,
`text` tinytext NOT NULL,
`point` int(10) NOT NULL
PRIMARY KEY (`id_question`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
DROP TRIGGER IF EXISTS quest_tr
CREATE TRIGGER quest_tr BEFORE DELETE ON question
FOR EACH ROW DELETE FROM test_question b WHERE b.id_question = old.id_question;
CREATE TABLE test_question (
`id_test` int(10) unsigned NOT NULL,
`id_question` int(10) unsigned NOT NULL,
UNIQUE KEY `place_sport` (`id_test`,`id_question`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
т.е. вместе с тестом (из табл test) должны удалятся и все вопровы (из табл question), которые в него входят . С другой стороны, при удалении какого-либо вопроса (из табл test) должна удалятся связь теста с удаленным вопросом (из табл test_question). И тот и другой триггер нужны для поддержания целостности БД, но при их взаимном существовании возникает ошибка #1442 - Can't update table 'event_sport' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Как я понял проблема в следующем: триггер (quest_tr) пытается обновить таблицу (test_question), которая заблокирована выражением (/триггером test_tr), которое и вызвало этот триггер.
Есть ли пути решения данной проблемы???
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
33947
|
|