|
MySQL.RU - Webboard
Вернуться
Отмена иструкций INSERT, UPDATE, DELETE в три (GerholdtSchnaps) 01/07/2008 - 01:44:05
Re: Отмена иструкций INSERT, UPDATE, DELETE в три (Санек) 08/12/2009 - 22:23:14
Re: Круто, спасибо (Артем) 22/01/2010 - 15:06:37
Re: Отмена иструкций INSERT, UPDATE, DELETE в три (Михаил) 14/12/2010 - 15:01:36
From: GerholdtSchnaps - 01/07/2008 - 01:44:05
Subject:Отмена иструкций INSERT, UPDATE, DELETE в три
-----------------
MySQL 5.0.45 nt-community
Возникла тут у меня необходимость использовать триггеры для пресечения попыток вставить кривые данные в таблицу... по форумам полазил и так ничего не нашел...
В итоге - пришлось RTFM и пробовать, пробовать и пробовать. И вот что получилось:
-======== Триггер: Before Insert, Before Update, Before Delete =========-
IF <ConditionToPreventActionSuccess> THEN
SET @SQLFailureMsg = 'Condition failed';
KILL QUERY CONNECTION_ID();
END IF;
-======= В роцедуре (например): =========-
DECLARE CONTINUE HANDLER FOR 1317 BEGIN
обрабатываем событие "Error: 1317 SQLSTATE: 70100 (ER_QUERY_INTERRUPTED)"
например, можно вернуть сообщение, хранящееся в этот момент в @SQLFailureMsg
END;
-====== Замечания: =======-
1. В каскадных операциях отменяется только текущая вставка и все последующие.
Записи, для которых триггер сработал корректно, считаются успешно вставленными.
2. "After insert" не срабатывает вообще, потому как считается, что записи уже были вставлены
З.Ы. Надеюсь, кому-то инфа окажется полезной.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
37766
|
|