Ir ao conteúdo
  • Cadastre-se

MySQL Problema com Trigger, utilizando IF. MYSQL


Posts recomendados

Opa, então estou tendo problema na criação de um Trigger, sei que pode estar bem errado, mas é que estou pegando agora para aprender.(Ainda vou ler a documentação do MYSQL).

create table teste(
	`ID` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
	`tipo` ENUM('positivo','negativo'),
    `valor` int NOT NULL
);

create table teste2(
	`ID` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    `saldo` int DEFAULT 0,
    `ID_teste` int(11) NOT NULL,
    FOREIGN KEY(`ID_TESTE`) references teste(`ID`)
);

CREATE TRIGGER tr_Saldo BEFORE INSERT ON teste1 
FOR EACH ROW BEGIN
		IF (tipo = 'positivo') THEN
				INSERT INTO teste2(saldo,ID_teste) 
                VALUES (NEW.valor, New.ID);
		END IF;
	END;

A lógica não está completa, o que pretendo fazer é criar uma tabela("TESTE2") que receba o valor de "TESTE", e que va criando um registro após o outro, somando sempre o saldo anterior com o valor novo. O raciocinio no código não está completo pois estou preso ai, não consigo fazer o IF funcionar, kkkkk... :tw_bawling:

Se alguém possuir um tutorial de MYSQL mais robusto, mesmo que seja em vídeo, ficarei grato em receber! Já fiz o curso de SQL da w3c, apesar de não lembrar todos comandos me lembro dos básicos. (Select,Join e tal, kkkkk...)

 

*

Consegui arrumar o IF, o que faltava era o "DELIMITER", mas ainda não consegui alcançar o objetivo, estou agora com problema na lógica do IF, não sei se estou querendo fazer milagre com os códigos, não sei se preciso fazer um "SELECT", na minha opinião, como o TRIGGER é do database, não vejo o porque de precisar fazer algum tipo de select. 

Segue o código: 

 

create table primeira(
	`ID` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
	`tipo` ENUM('positivo','negativo'),
    `valor` int NOT NULL
);
create table segunda(
	`ID` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    `saldo` int DEFAULT 0,
    `ID_teste` int(11) NOT NULL,
    FOREIGN KEY(`ID_TESTE`) references teste(`ID`)
);

DELIMITER //
CREATE TRIGGER tr_Saldo AFTER INSERT ON primeira
FOR EACH ROW BEGIN
		IF tipo = 'positivo' THEN
			INSERT INTO segunda(saldo,ID_teste) 
            VALUES (segunda.saldo + primera.NEW.valor, primeira.NEW.ID);
		ELSEIF primeira.tipo = 'negativo' THEN
			INSERT INTO segunda(saldo,ID_teste)
            VALUES (segunda.saldo - primeira.NEW.valor, primeira.NEW.ID);
		END IF;
	END//
DELIMITER ;

Resolvido! Consegui aqui, valeu ai quem leu, kkkkk... 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...