Erro Ao Criar Triggers No Mysql Com Varios Comandos Delete Com 3 Tabelas

MySQL

15/06/2011

Ola pessoal estou desenvolvendo um sistema e modelei um banco de dados estou com dificuldade em criar triggers no mysql com varios comandos delete usando 3 tabelas abaixo codigos com a tentantivas são 3 tabelas. Agradeco a todos que me ajudarem

Cadastro

EnderecoCadastro

SituacaoCadastro

AS tres tem o idCadastro sendo PK da tabela Cadastro e FK das outras duas


____________________________ TENTATIVA 1 ________________________________________________________________________________________

DELIMITER //
CREATE TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELETE ON Cadastro
FOR EACH ROW 
BEGIN 
DELETE FROM EnderecoCadastro WHERE idCadastro = OLD.idCadastro ;
DELETE FROM SituacaoCadastro WHERE idCadastro = OLD.idCadastro ;
END;//
DELIMITER ;
____________________________ TENTATIVA 2_________________________________________________________________________________________

delimiter |
CREATE TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELETE ON Cadastro
FOR EACH ROW BEGIN
DELETE FROM EnderecoCadastro WHERE idCadastro = OLD.idCadastro;
DELETE FROM SituacaoCadastro WHERE idCadastro = OLD.idCadastro; 
END;
|
delimiter ;

____________________________ TENTATIVA 3 _________________________________________________________________________

CREATE DEFINER = CURRENT_USER TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELETE ON Cadastro
FOR EACH ROW BEGIN
DELETE FROM EnderecoCadastro WHERE idCadastro = OLD.idCadastro;
DELETE FROM SituacaoCadastro WHERE idCadastro = OLD.idCadastro;
END;

____________________________ ERRO AO TENTAR CRIAR _____________________________________________________________

DELIMITER //
CREATE TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELETE ON Cadastro
FOR EACH ROW 
BEGIN 
DELETE FROM EnderecoCadastro WHERE idCadastro = OLD.idCadastro
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a 'DELIMITER //
CREATE TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELET' na linha 1
DELETE FROM SituacaoCadastro WHERE idCadastro = OLD.idCadastro
Error: 1054 - Coluna 'OLD.idCadastro' desconhecida em 'where clause'
END
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a 'END' na linha 1
//
DELIMITER
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a '//
DELIMITER' na linha 1


____________________________ ERRO AO TENTAR CRIAR ________________________________________________________________

delimiter |
CREATE TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELETE ON Cadastro
FOR EACH ROW BEGIN
DELETE FROM EnderecoCadastro WHERE idCadastro = OLD.idCadastro
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a 'delimiter |
CREATE TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELET' na linha 1
DELETE FROM SituacaoCadastro WHERE idCadastro = OLD.idCadastro
Error: 1054 - Coluna 'OLD.idCadastro' desconhecida em 'where clause'
END
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a 'END' na linha 1
|
delimiter
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a '|
delimiter' na linha 1

____________________________ ERRO AO TENTAR CRIAR ________________________________________________________________

CREATE DEFINER = CURRENT_USER TRIGGER trigger_ExcluirSituacaoEnderecoCadastro AFTER DELETE ON Cadastro
FOR EACH ROW BEGIN
DELETE FROM EnderecoCadastro WHERE idCadastro = OLD.idCadastro
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a '' na linha 3
DELETE FROM SituacaoCadastro WHERE idCadastro = OLD.idCadastro
Error: 1054 - Coluna 'OLD.idCadastro' desconhecida em 'where clause'
END
Error: 1064 - Você tem um erro de sintaxe no seu SQL próximo a 'END' na linha 1 
 
Leone Rocha

Leone Rocha

Curtidas 0

Respostas

Anthony Accioly

Anthony Accioly

15/06/2011

Olá Leone,

Você está rodando esses comandos a partir de um editor, a partir de um arquivo de script, ou a partir do comando mysql?
Parece que, por algum motivo, seu editor está ignorando o delimitador artificial e parando cada comando no primeiro ;, eis o motivo dos erros. Eu tentaria entrar os comandos diretamente no console através  do client mysql.
Alguns alunos meus já tiveraram o mesmo problema do que você usando versões antigas do query browser.

Além da linha de comando, eu não posso deixar de recomendar o MySQL Workbench tanto como editor sql como ferramenta de modelagem. É Free!

Outra possibilidade (remota devido as mensagens de erro apresentadas) é que você esteja usando uma versão antiga do MySQL. Você pode ver a versão instalada com:
SELECT version();

Eu recomendo fortemente a utilização de versões 5.x.

Abraços,


GOSTEI 0
Tiago Bocato

Tiago Bocato

15/06/2011

Além da linha de comando, eu não posso deixar de recomendar o MySQL Workbench tanto como editor sql como ferramenta de modelagem. É Free!


Concordo plenamente, o workbench serve para todos os tipos de DBA, afinal ele oferece diversas maneiras para construir um banco. Além de ser de fácil manuseio.
GOSTEI 0
POSTAR