Ir para conteúdo
Fórum Script Brasil
  • 0

DUVIDAS COM O "OLD." NAS TRIGGERS DO MYSQL 8.0


Nicolas Alves

Pergunta

/* Boa Tarde Pessoal, gostaria de tirar uma duvida em relação as TRIGGERS, uso como os tutorais com OLD. para pegar os dados antes de serem apagados, e tento criar um metodo de backup com as Triggers mas dá um erro no MYSQL 8.0 que está alguma coisa errada entre o codigo dentro das Triggers e já não sei o que fazer, alguém consegue me ajudar? vou passar todo meu codigo por aqui */

CREATE DATABASE AMERICANOS;

--AMERICANOS--

USE AMERICANOS;

CREATE TABLE FUNC_AMERICANOS(
            IDFUNC_AMERICANOS INT PRIMARY KEY AUTO_INCREMENT,
            NOME VARCHAR(30) NOT NULL,
            SEXO ENUM('Masculino','Feminino','Transgênero','Neutro',
'Não-binário','Outros') NOT NULL,
            CARGO VARCHAR(30) NOT NULL,
            SALARIO FLOAT (10,2) NOT NULL,
            EMAIL VARCHAR(50) UNIQUE,
            CPF VARCHAR(15) NOT NULL UNIQUE,
);

CREATE TABLE ENDERECO(
            IDENDERECO INT PRIMARY KEY AUTO_INCREMENT, 
         RUA VARCHAR(30) NOT NULL,
         BAIRRO VARCHAR(30) NOT NULL,
         CIDADE VARCHAR(30) NOT NULL,
         ESTADO CHAR(2) NOT NULL,
             ID_FUNC_AMERICANOS INT UNIQUE
);

CREATE TABLE TELEFONE(
       IDTELEFONE INT PRIMARY KEY AUTO_INCREMENT, 
         TIPO ENUM('RES','COM','CEL') NOT NULL,
         NUMERO VARCHAR(15) NOT NULL,
         ID_FUNC_AMERICANOS INT
);

--TABELA BACKUP E TRIGGER--

CREATE TABLE BKP_FUNC_AMERICANOS(
    IDBACKUP INT PRIMARY KEY AUTO_INCREMENT,
    IDFUNC_AMERICANOS INT,
    NOME VARCHAR(30),
    SEXO VARCHAR(15),
        CARGO VARCHAR(30),
        SALARIO FLOAT(10,2),
        EMAIL VARCHAR(50),
        CPF VARCHAR(15)
        DATA DATETIME,
    USUARIO VARCHAR(30),
    EVENTO VARCHAR(20)
);

DELIMITER .

CREATE TRIGGER BACKUP_FUNC_AMERICANOS BEFORE DELETE 
ON FUNC_AMERICANOS
FOR EACH ROW
BEGIN    
    INSERT INTO BKP_FUNC_AMERICANOS VALUES
        (NULL,OLD.IDFUNC_AMERICANOS,OLD.NOME,OLD.SEXO,
         OLD.CARGO,OLD.SALARIO,OLD.EMAIL,OLD.CPF,
         NOW(),CURRENT_USER(),'DEMITIDO');
END
.

DELIMITER ;

/* CONSTRAINTS E FOREIGN KEYS */

ALTER TABLE ENDERECO
ADD CONSTRAINT FK_ENDERECO_FUNC_AMERICANOS
FOREIGN KEY(ID_FUNC_AMERICANOS)
REFERENCES FUNC_AMERICANOS(IDFUNC_AMERICANOS);

ALTER TABLE TELEFONE
ADD CONSTRAINT FK_TELEFONE_FUNC_AMERICANOS
FOREIGN KEY(ID_FUNC_AMERICANOS)
REFERENCES FUNC_AMERICANOS(IDFUNC_AMERICANOS);

--DADOS DE FUNCIONARIOS DE AMERICANOS--

INSERT INTO FUNC_AMERICANOS VALUES(NULL,'Élton Teves','Masculino','Atendente',1400.00,'Eltont@Americanos.com.br','47859874814');

INSERT INTO FUNC_AMERICANOS VALUES(NULL,'Vânia Chagas','Transgênero','Atendente_Caixa',1600.00,'Vaniac@Americanos.com.br','2478547964');

INSERT INTO FUNC_AMERICANOS VALUES(NULL,'Carlos Pinhal','Outros','Atendente_Caixa',1600.00,'Carlosp@Americanos.com.br','24784147526');

INSERT INTO FUNC_AMERICANOS VALUES(NULL,'Ellie Pimenta','Feminino','Faxineira',1300.00,'Não Possui E-MAIL','574812485');

INSERT INTO ENDERECO VALUES(NULL,'Rua Duque de Caxias','São Cristóvão','São Paulo','SP',3);
INSERT INTO ENDERECO VALUES(NULL,'Rua Santa Luzia','Vila Nova','São Paulo','SP',2);
INSERT INTO ENDERECO VALUES(NULL,'Rua Primeiro de Maio','Centro','São Paulo','SP',1);
INSERT INTO ENDERECO VALUES(NULL,'Rua das Flores','Grajáu','São Paulo','SP',6);
INSERT INTO ENDERECO VALUES(NULL,'Rua Quatorze','Industrial','São Paulo','SP',5);
INSERT INTO ENDERECO VALUES(NULL,'Rua Santo Antônio','Centro','São Paulo','SP',4);

INSERT INTO TELEFONE VALUES(NULL,'CEL','9414575422',3);
INSERT INTO TELEFONE VALUES(NULL,'CEL','9742558252',4);
INSERT INTO TELEFONE VALUES(NULL,'CEL','9474122336',5);
INSERT INTO TELEFONE VALUES(NULL,'RES','59314785',6);
INSERT INTO TELEFONE VALUES(NULL,'CEL','9878539636',1);
INSERT INTO TELEFONE VALUES(NULL,'CEL','9874785636',2);

--PRODUTOS--

CREATE TABLE AMERICANOS.PRODUTOS_AMERICANOS(
           IDPRODUTO INT PRIMARY KEY AUTO_INCREMENT,
           NOME VARCHAR(50) NOT NULL,
           VALOR FLOAT (10,2) NOT NULL
);

CREATE TABLE AMERICANOS.BKP_PRODUTOS_AMERICANOS(
       IDBKP INT PRIMARY KEY AUTO_INCREMENT,
       IDPRODUTO INT,
       NOME VARCHAR(50),
       VALOR FLOAT(10,2)
);

-- TRIGGER DE BACKUP DEPOIS DA INSERÇÃO DE DADOS NA TABELA DE PRODUTOS--

DELIMITER .

CREATE TRIGGER AMERICANOS.BACKUP_PRODUT_AMERICANOS BEFORE INSERT
ON AMERICANOS.PRODUTOS_AMERICANOS
FOR EACH ROW
BEGIN
    INSERT INTO AMERICANOS.BKP_PRODUTOS_AMERICANOS VALUES(NULL,NEW.IDPRODUTO,
    NEW.NOME,NEW.VALOR);
END
.

DELIMITER ;

--DADOS--

INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'CELULAR SANSUNG A47',1400.67);
INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'AIER FYER BRASTEMB',890.99);
INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'GELADEIRA ELETRALUZ MAX',1952.25);
INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'CAPINHAS DE CELULAR PERSONALIZADAS',40.00);
INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'SOFA-CAMA',2600.85);
INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'BANHEIRA AMERICANA',2655.00);
INSERT INTO AMERICANOS.PRODUTOS_AMERICANOS(NULL,'CADERNO UNIVERSITÁRIO 160FOLHAS',9.99);

OBS:

AH É O "NEW." TAMBÉM DÁ ERRO, EU NÃO SEI SE ESTOU ERRANDO ALGUMA SINTAXE, ESSA PARTE DE TRIGGERS PARECE FÁCIL, MAS EU NÃO SEI NO QUE ESTOU ERRANDO PARA DAR ERRO, SE ALGUÉM PUDER CHECAR POR SI PROPRÍO NO MYSQL 8.0 ESSE CODIGO VAI DAR ERRO NAS TRIGGERS. 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...