SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.12.2010 17:17:33

[MI_nor]
Участник
Зарегистрирован: 23.01.2010
Сообщений: 16

Как прервать insert триггером?

Здравствуйте, появилась такая проблема:
Необходимо инсерт прервать триггером. Пишу

DELIMITER $$
CREATE TRIGGER `may_drive` BEFORE INSERT ON `cars_meta`
FOR EACH ROW BEGIN
    SET @prava = (SELECT prava FROM man WHERE id=(SELECT man_id FROM cars WHERE id=NEW.car_id));
   IF NEW.attribute == `Грузоподъемноть`
        AND LOCATE(`C`,@prava) <=> 0
    THEN тут типа прерывание вставки
END$$

Гугление привело только к 1й ссылке на которой задавался подобные вопрос но без ответа smile

Неактивен

 

#2 20.12.2010 16:13:36

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Как прервать insert триггером?

Прервать триггером операцию изменения данных, которая его вызвала, никак нельзя.
В нём можно написать заведомо ошибочный код - тогда изменения данных не произойдет, если триггер типа BEFORE, но это хак.
Корректно такие задачи решаются с помощью процедур.

Неактивен

 

#3 20.12.2010 16:44:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как прервать insert триггером?

В MySQL 5.5 добавлен оператор SIGNAL, позволяющий сгенерировать ошибку более красиво. http://dev.mysql.com/doc/refman/5.5/en/signal.html

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson