Jump to content


Photo

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


  • Faça o login para participar
3 replies to this topic

#1 leonecr

leonecr

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Masculino
  • Localidade:São Paulo

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

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

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 leonecr

leonecr

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 15/06/2011, 11:20

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.

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"

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 15/06/2011, 12:32

Comece por aqui:

http://dev.mysql.com...onstraints.html




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq