2014-12-02 4 views
0

Я хочу создать триггер, который удалить любую новую строку вставить, если значение больше, чем число, например 8.Создать триггер, который после удаления вставки

Я попытался это:

DELIMITER | 
CREATE TRIGGER mytrigger AFTER INSERT ON mytab 
    FOR EACH ROW 
    BEGIN 
     DELETE FROM mytab WHERE myparameter > 8; 
    END 
| 

DELIMITER ; 

Я попытался:

INSERT INTO mytab VALUES (9); 

и это сообщение об ошибке:

#1442 - Can't update table 'mytab' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

также, если я ставлю:

INSERT INTO mytab VALUES (4); 

это работает та же ошибка ...

Спасибо!

+0

вы не можете вставить/обновить/удалить в той же таблице, где вы запускаете триггер. –

+0

Что не так? Вам нужно предоставить дополнительную информацию: сообщение об ошибке будет хорошим началом. –

ответ

1

Не удаляйте! Просто произведите ошибку на вставке:

DELIMITER | 
CREATE TRIGGER mytrigger BEFORE INSERT ON mytab 
    FOR EACH ROW 
    BEGIN 
     IF new.myparameter > 8 THEN 
      signal sqlstate '45000' set message_text = 'Parameter value can be no larger than 8'; 
     END IF; 
    END 
| 

DELIMITER ; 
+0

Вы не удалили строку удаления: P Спасибо большое Гордон! – paco666