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




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



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