Olá a todos,
Estou desenvolvendo uma estrutura de dados que necessita de algumas restrições que não podem ser explicitadas com elegância através de contraints check. Portanto, decidi utilizar triggers para resolver o problema, porém, no SGBD que estou utilizando a solução se tornou mais deselegante ainda (rs).
Enfim, necessito checar determinada condição com os novos dados a serem inseridos no banco e caso determinada condição não seja satisfeita preciso interromper a inserção. No entanto, desconheço algum comando do MySQL 5.1 que efetue tal tarefa, ou seja, interromper uma inserção.
Contudo, resolvi o problema com a seguinte trigger (o que não me deixo muito feliz):
DELIMITER $$
USE `REUNIOES`$$
CREATE TRIGGER checkTypeValue
BEFORE INSERT ON Reuniao
FOR EACH ROW
BEGIN
IF ( NEW.idConselho <> 2 AND NEW.tipo NOT IN ( 'O', 'E' ) ) THEN
SET NEW.tipo := NULL;
END IF;
END $$
DELIMITER ;
Ou seja, para interromper a inserção atribuo a flag NULL para um atributo obrigatório (POG).
Caso alguém conheça alguma solução mais elegante para esse problema, por favor, me informem.