Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Dae galera beleza? Feliz 2010 a todos.
Eu tenho um caso de referência recursiva, porém retirei a referência recursiva, pois vi que o MYSQL não se comportou muito bem com ela, mas preciso impedir o delete de um registro caso ele possua referência.
Devido a isso resolvi fazer um trigger que ao tentar deletar uma categoria, verifique se existe uma categoria filha, e se possuir impedir o delete, pois se essa categoria possuir outros itens, ela já é impedida de ser deletada.
Obs:"Caso tenham solucao pra referencia recursiva em MYSQL, também aceito."
A tabela: (Onde categoria Mãe é o id de uma outra categoria.)
CREATE TABLE IF NOT EXISTS `categoria` (
`id_categoria` int(11) NOT NULL AUTO_INCREMENT,
`titulo` varchar(80) NOT NULL,
`ativa` varchar(255) DEFAULT 'N',
`ordem` int(5) NOT NULL DEFAULT '0',
`descricao` varchar(500) DEFAULT NULL,
`categoriamae` int(11) DEFAULT '0',
PRIMARY KEY (`id_categoria`),
KEY `fk_pessoa_categoria` (`id_pessoa`),
KEY `FK_CATEGORIA_CATEGORIAMAE` (`categoriamae`)
)
Eu tentei, porém me confundi, se uso OLD para verificar o ID.
Também me perdi ao impedir o delete, eu devo fazer oq? return false?, pois nao tenho menor ideia do q fazer em relacao a isso.
O teste seria: "select count(id_categoria) into contagem from categoria where categoriamae = old.id_categoria"; Estou certo?
fiz um teste:
DELIMITER |
CREATE TRIGGER impedeDeleteCateg BEFORE DELETE ON categoria
FOR EACH ROW BEGIN
select count(id_categoria) INTO contagem from categoria where categoriamae = OLD.id_categoria
IF @contagem > 0 THEN
return false;
END IF;
return true;
END;
|
DELIMITER ;
porém travou meu MYSQL antes mesmo de inserir.
vlww e flww
caso tenham solucao pra referencia recursiva em MYSQL, também aceito.
Carregando comentários...