Erro Ao Criar Triggers No Mysql Com Varios Comandos Delete Com 3 Tabelas
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
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
Curtidas 0
Respostas
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:
Eu recomendo fortemente a utilização de versões 5.x.
Abraços,
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
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