Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
33947



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |