
Erro Ao Criar Triggers No Mysql Com Varios Comandos Delete Com 3 Tabel
Started By leonecr, 14/06/2011, 22:27
3 replies to this topic
#1
Posted 14/06/2011, 22:27
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
#2
Posted 15/06/2011, 07:03
Provavelmente o problema aí é o programa cliente que você está usando que não sabe enviar comando de várias linhas assim. Ou você está na janela de query, quando deveria estar na janela de script, caso o programa faça essa diferenciação. Experimente outro programa. De qualquer modo, porque você não faz isso com um ON DELETE CASCADE na chave estrangeira? Pra mim parece a mesma coisa.
#3
Posted 15/06/2011, 11:20
Eu estou usando MySQL-Front 3.2 e tambem testei no MySQL Workbench 5.2 e MySQL Administrator e phpMyAdmin mas nao funcionou a Versão do MySQL é a 5.5. COMO FUNCIONA ESSE "ON DELETE CASCADE"Provavelmente o problema aí é o programa cliente que você está usando que não sabe enviar comando de várias linhas assim. Ou você está na janela de query, quando deveria estar na janela de script, caso o programa faça essa diferenciação. Experimente outro programa. De qualquer modo, porque você não faz isso com um ON DELETE CASCADE na chave estrangeira? Pra mim parece a mesma coisa.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)