Não consigo usar o mecanismo InnoDB devido a alguns problemas de dependência em LuaSQL e PtokaX.
Minha consulta atual é algo como:
DELETE e.*, m.*
FROM entries e
INNER JOIN magnets m
ON m.eid = e.id
WHERE e.id = %d
onde, %d
é um inteiro passado pelo usuário. Esta consulta funciona se houver pelo menos uma entrada na magnets
tabela relacionada à entries
tabela.
Porém, falha quando não entries
há linha dependente na magnets
tabela. Posso modificar esta consulta para executar a exclusão de ambas as tabelas, independentemente das linhas filhas em magnets
? Ou preciso primeiro verificar se existe um filho e excluir de acordo?
Há várias coisas que você pode tentar:
DELETE
Estilo #1:LEFT JOIN
DELETE
Estilo #2: DuasDELETE
consultas independentes(sem
FOREIGN KEY
definição)DELETE
Estilo #2b: DuasDELETE
consultas: a ordem é importante(quando há um
FOREIGN KEY
definido entre as duas tabelascom a
ON DELETE NO ACTION
propriedade)DELETE
Estilo #3: UmaDELETE
consulta(quando houver uma
FOREIGN KEY
definidacom a
ON DELETE CASCADE
propriedade)De uma chance !!!
Na verdade, você pode facilitar sua vida configurando o relacionamento que conecta as tabelas "ímãs" e "entradas" às opções do CASCADE.
Desta forma, a exclusão na tabela filho será feita automaticamente.