Ir para conteúdo
brunonative

Trigger de Acordo com Data e Hora

Recommended Posts

Bom dia pessoal!

Estou passando um sufoco aqui na criação de um sistema.

 

É o seguinte, existem 5 tabelas: Membros | Objetivos | Email | Perguntas | Respostas

O Administrador cadastra os membros, cria o email (dentro do sistema tem um editor WYSIWYG), perguntas e respostas.
O administrador na hora de fazer o cadastro ou edição do membro, ele diz qual vai ser o próximo objetivo, qual email vai ser enviado, qual a pergunta que vai junto com o email e qual reposta .. junto com a edição vem A DATA E A HORA PRA ISSO ACONTECER.

 

A dúvida é a seguinte: Como crio um Trigger para enviar o email criado naquela determinada data e hora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Leandro de Jesus
      Senhores muito boa noite,
       
      Eu tenho o seguinte funcionando:
       
      IF(OLD.idDepartamentos <> NEW.idDepartamentos) THEN INSERT INTO px_pedidos_log (idPedido, campo, valor_novo, valor_antigo ) values (NEW.id, 'idDepartamentos', NEW.idDepartamentos, OLD.idDepartamentos ); END IF  
      Eu queria fazer isso com mais campos na mesma trigger.
      Tentei abaixo e dá erro.
      Alguma luz para fazer isso ?

      Preciso fazer isso com 6 campos.
       
      IF(OLD.idDepartamentos <> NEW.idDepartamentos) THEN INSERT INTO px_pedidos_log (idPedido, campo, valor_novo, valor_antigo ) values (NEW.id, 'idDepartamentos', NEW.idDepartamentos, OLD.idDepartamentos ); END IF; IF(OLD.idAcao <> NEW.idAcao) THEN INSERT INTO px_pedidos_log (idPedido, campo, valor_novo, valor_antigo ) values (NEW.id, 'idAcao', NEW.idAcao, OLD.idAcao ); END IF;  
       
    • Por Leandro de Jesus
      Senhores muito boa tarde,
      Preciso de uma luz.
       
       
      Depois de executar o trigger
      Preciso comparar os campos de duas tabelas
       
      Então após atualizar a tabela px_pedidos eu pego os dados e coloco px_pedidos_log e depois preciso comparar os campos
      O código abaixo funciona, só não consigo comparar.
       
      DROP TRIGGER IF EXISTS `LogPedido`; CREATE DEFINER=`root`@`localhost` TRIGGER `LogPedido` BEFORE UPDATE ON `px_pedidos` FOR EACH ROW insert into px_pedidos_log select * from px_pedidos WHERE id=NEW.id  
      Logo após tentei  e não foi 

       
      IF(NEW.campo != OLD.campo) THEN         UPDATE px_pedidos SET alteracoes +=1 WHERE id=NEW.id; END IF;  
      Alguém pode me dar um caminho ? Já rodei a internet mas não estou conseguindo implantar isso.
       
      Abs e obrigado
       
    • Por josePeixoto
      Olá,
       
      quando tento executar a trigger abaixo, ele me retorna 
      Erro(56,16): PLS-00306: wrong number or types of arguments in call to '||'  
      create or replace TRIGGER API_SIM_PF_ATUALIZA_DENTALIS BEFORE INSERT OR UPDATE ON PESSOA_FISICA FOR EACH ROW DECLARE type t_num is table of number; DS_EMAIL_W t_num; TELEFONE_RES_W t_num; TELEFONE_COM_W t_num; ESTADO_CIVIL_W VARCHAR2(255); ENDERECO_RES_W t_num; NUMERO_W t_num; BAIRRO_RES_W t_num; COMPLEMENTO_RES_W t_num; CIDADE_RES_W t_num; CEP_RES_W t_num; ENDERECO_COM_W t_num; NUMERO_COM_W t_num; BAIRRO_COM_W t_num; COMPLEMENTO_COM_W t_num; CIDADE_COM_W t_num; CEP_COM_W t_num; PROFISSIONAL_W VARCHAR2(255); SEXO_W VARCHAR2(255); DT_NASCIMENTO_W t_num; BEGIN SELECT DISTINCT CP.DS_EMAIL, ('('||nr_ddd_telefone||')'||nr_telefone), ('('||nr_ddd_telefone||')'||nr_telefone), (SELECT CP1.DS_ENDERECO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1), (SELECT CP1.NR_ENDERECO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1), (SELECT CP1.DS_BAIRRO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1), (SELECT CP1.DS_COMPLEMENTO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1), (SELECT CP1.DS_MUNICIPIO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1), (SELECT CP1.CD_CEP FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1), TO_CHAR(:NEW.DT_NASCIMENTO,'"YYYY-MM-DD HH24:MI:SS') BULK COLLECT INTO DS_EMAIL_W,TELEFONE_RES_W,TELEFONE_COM_W,ENDERECO_RES_W,NUMERO_W,BAIRRO_RES_W,COMPLEMENTO_RES_W,CIDADE_RES_W,CEP_RES_W,/*ENDERECO_COM_W,NUMERO_COM_W,BAIRRO_COM_W,COMPLEMENTO_COM_W, CIDADE_COM_W,CEP_COM_W,*/DT_NASCIMENTO_W FROM TASY.COMPL_PESSOA_FISICA CP WHERE CP.CD_PESSOA_FISICA =:NEW.CD_PESSOA_FISICA AND CP.IE_TIPO_COMPLEMENTO = 1; SELECT V.DS_VALOR_DOMINIO INTO ESTADO_CIVIL_W FROM VALOR_DOMINIO V WHERE CD_DOMINIO = 5 AND V.VL_DOMINIO = :NEW.IE_ESTADO_CIVIL; SELECT CA.DS_CARGO INTO PROFISSIONAL_W FROM CARGO CA WHERE CA.CD_CARGO = :NEW.CD_CARGO; SELECT V.DS_VALOR_DOMINIO INTO SEXO_W FROM VALOR_DOMINIO V WHERE CD_DOMINIO = 4 AND V.VL_DOMINIO = :NEW.IE_SEXO; BEGIN SEND_DB_REQUST_PROC ('http://628186fc.ngrok.io/DentalisIntegration-1.0.0/dentalis/createuser', '{ "nome":' || :NEW.NM_PESSOA_FISICA ||','|| '"codigo_externo":' || :NEW.CD_PESSOA_FISICA ||','|| '"codigo_plano":' || 694 ||','|| '"matricula":' || :NEW.CD_PESSOA_FISICA || ',' || '"cpf":' || :NEW.NR_CPF ||','|| '"rg":' || :NEW.NR_IDENTIDADE || ',' || '"email":' || DS_EMAIL_W || ',' || '"telefone_res":' || TELEFONE_RES_W ||','|| '"telefone_com":' || TELEFONE_COM_W || ',' || '"celular":' || :NEW.NR_TELEFONE_CELULAR || ',' || '"observacao":' || :NEW.DS_OBSERVACAO || ',' || '"estado_civil":' || ESTADO_CIVIL_W || ',' || '"profissao":' || PROFISSIONAL_W || ',' || '"sexo":' || SEXO_W || ',' || '"data_nascimento":' || DT_NASCIMENTO_W || ',' || '"endereco_res":' || ENDERECO_RES_W || ',' || '"numero_res":' || NUMERO_W || ',' || '"bairro_res":' || BAIRRO_RES_W || ',' || '"complemento_res":' || COMPLEMENTO_RES_W || ',' || '"cidade_res":' || CIDADE_RES_W || ',' || '"cep_res":' || CEP_RES_W || ',' || '"endereco_com": "",' || '"numero_com":"",' || '"bairro_com":"",' || '"complemento_com":"",' || '"cidade_com":"",' || '"cep_com":""' || '}'); exception when others then raise_application_error(-20000,'Erro: '|| sqlerrm); END; END;  
      Alguém sabe o que pode ser? 
       
      Obrigado desde já pela atenção!
    • Por Paul Walker
      Preciso desenvolver um sistema que automatiza o atendimento a alunos feitos por coordenadores.
      Quando algum aluno chegar na secretária e pedir para ser atendido por algum coordenador, ela vai cadastrar no sistema essa solicitação de atendimento. Este aluno entrara na fila do referido coordenador.
      Então fiz duas tabelas. "Fila" que é a da secretária que vai cadastrar e a  "Coordenador" que é as informações dele.
      o que quero é passar somente as seguintes informações da fila para o coordenador:
      Nome, Curso, se já é aluno, status e data/hora.
      até agora está desse jeito, e não sei como fazer para passar essas informações automaticamente para ele, alguém pode me ajudar? Estou usando o Workbench.
       
      SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
      SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
      SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
      CREATE SCHEMA IF NOT EXISTS `at_automatizado` DEFAULT CHARACTER SET utf8 ;
      USE `at_automatizado` ;
      -- -----------------------------------------------------
      -- Table `at_automatizado`.`coordenador`
      -- -----------------------------------------------------
      CREATE TABLE IF NOT EXISTS `at_automatizado`.`coordenador` (
        `codigo` INT NOT NULL AUTO_INCREMENT,
        `login` VARCHAR(45) NULL,
        `senha` VARCHAR(45) NULL,
        `nome_coordenador` VARCHAR(100) NULL,
        `ramal` VARCHAR(9) NULL,
        `curso` VARCHAR(45) NULL,
        PRIMARY KEY (`codigo`))
      ENGINE = InnoDB;

      -- -----------------------------------------------------
      -- Table `at_automatizado`.`fila`
      -- -----------------------------------------------------
      CREATE TABLE IF NOT EXISTS `at_automatizado`.`fila` (
        `codigo` INT NOT NULL AUTO_INCREMENT,
        `coordenador_codigo` INT NOT NULL,
        `nome_coordenador` VARCHAR(100) NULL,
        `nome_aluno` VARCHAR(100) NULL,
        `telefone` VARCHAR(14) NULL,
        `curso` VARCHAR(100) NULL,
        `ja_e_aluno` ENUM('Sim', 'Não') NULL,
        `status` ENUM('Já atendido', 'Não atendido') NULL,
        `data_e_hora` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`codigo`),
        INDEX `fk_fila_coordenador_idx` (`coordenador_codigo` ASC),
        CONSTRAINT `fk_fila_coordenador`
          FOREIGN KEY (`coordenador_codigo`)
          REFERENCES `at_automatizado`.`coordenador` (`codigo`)
          ON DELETE NO ACTION
          ON UPDATE NO ACTION)
      ENGINE = InnoDB;

      SET SQL_MODE=@OLD_SQL_MODE;
      SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
      SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
    • Por MauVirtual
      Pessoal, estou perdido tenho a seguinte tarefa abaixo, mas usando a trigger não posso dar o select ela nao aceita, e não sei se uso procedure, triger, ambas, sei que essa parte deveria ser feito pela aplicação, mas o professor quer essa apresentação somente em BD.
      compare se a data e hora da viagem e o motorista e viatura estão disponíveis antes de incluir no banco de dados,
      Entao digamos que a viatura Gol tem uma viagem com o motorista Carlos dia 22/03/2018 as 11:00 com termino no mesmo dia porem na hora 17:00 e suponhamos que alguem quera cadastra a viagem com o mesmo motorista a mesma viatura no mesmo dia porem no horario do 12:00, não poderia ser cadastrado já que a viatura e motorista estariam ocupados. Estão preci ser checado se a viatura está disponivel, se o motorista está disponivel em um intervalo de dia e hora, pois poderam acontecer viagens de mais de um dia.
      Abaixo segue meu código sou bem iniciante e toda ajuda seria muito bem vinda.
      Já criei um posto sobre isso, mas mudei a tabela e naquele post não consegui resolver
      agredeço a ajuda, batendo o desespero já
      CREATE TABLE DADOSPESSOAS( IDDADOSPESSOAS INT PRIMARY KEY AUTO_INCREMENT, NOME VARCHAR(45) NOT NULL, EMAIL VARCHAR(45) UNIQUE NOT NULL, NIVEL CHAR(1) NOT NULL, DATANASCIMENTO DATE NOT NULL, SEXO CHAR(1) NOT NULL, CPF CHAR(14) UNIQUE NOT NULL, CELULAR VARCHAR(14) UNIQUE NOT NULL, CEP CHAR (9) NOT NULL, RUA VARCHAR(30) NOT NULL, NUMERO VARCHAR(8) NOT NULL, BAIRRO VARCHAR(25) NOT NULL, CIDADE VARCHAR(40) NOT NULL, ESTADO CHAR(2) NOT NULL ); CREATE TABLE MOTORISTA ( IDMOTORISTA INT PRIMARY KEY AUTO_INCREMENT, NUMEROREGISTRO VARCHAR(10) UNIQUE NOT NULL, VALIDADE DATE NOT NULL, ID_DADOSPESSOAS INT ); CREATE TABLE ADMIN( IDADMIN INT PRIMARY KEY AUTO_INCREMENT, SENHA VARCHAR(12) NOT NULL, ID_DADOSPESSOAS INT ); CREATE TABLE VIATURA ( IDVIATURA INT PRIMARY KEY AUTO_INCREMENT, TIPOVEICULO VARCHAR(45) NOT NULL, MARCA VARCHAR(25) NOT NULL, MODELO VARCHAR(25) NOT NULL, COR VARCHAR(25) NOT NULL, ANOFABRICACAO CHAR(4) NOT NULL, PLACA CHAR(8) UNIQUE NOT NULL, RENAVAN CHAR(11) UNIQUE NOT NULL, PASSAGEIROS CHAR(2) NOT NULL ); CREATE TABLE VIAGENS ( IDVIAGENS INT PRIMARY KEY AUTO_INCREMENT, CIDADE VARCHAR(25) NOT NULL, DATAHORAINICIO DATETIME NOT NULL, DATAHORAFINAL DATETIME NOT NULL, COR VARCHAR(15) NOT NULL, CEP CHAR(9) NOT NULL, RUA VARCHAR(30) NOT NULL, NUMERO VARCHAR(8) NOT NULL, BAIRRO VARCHAR(25) NOT NULL, ESTADO CHAR(2) NOT NULL, DESCRICAO VARCHAR(200), ID_DADOSPESSOAS INT, ID_MOTORISTA INT, ID_VIATURA INT ); CREATE TABLE PASSAGEIRO ( IDPASSAGEIRO INT PRIMARY KEY AUTO_INCREMENT, ID_DADOSPESSOAS INT , ID_VIAGEM INT ); ALTER TABLE VIAGENS ADD CONSTRAINT FK_DADOSPESSOAS_VIAGENS FOREIGN KEY (ID_DADOSPESSOAS) REFERENCES DADOSPESSOAS(IDDADOSPESSOAS) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE VIAGENS ADD CONSTRAINT FK_MOTORISTA_VIAGENS FOREIGN KEY (ID_MOTORISTA) REFERENCES MOTORISTA(IDMOTORISTA)ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE VIAGENS ADD CONSTRAINT FK_VIATURA_VIAGENS FOREIGN KEY (ID_VIATURA) REFERENCES VIATURA(IDVIATURA)ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MOTORISTA ADD CONSTRAINT FK_DADOSPESSOAS_MOTORISTA FOREIGN KEY (ID_DADOSPESSOAS) REFERENCES DADOSPESSOAS(IDDADOSPESSOAS)ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ADMIN ADD CONSTRAINT FK_DADOSPESSOAS_ADMIN FOREIGN KEY (ID_DADOSPESSOAS) REFERENCES DADOSPESSOAS(IDDADOSPESSOAS)ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PASSAGEIRO ADD CONSTRAINT FK_DADOSPESSOAS_PASSAGEIRO FOREIGN KEY (ID_DADOSPESSOAS) REFERENCES DADOSPESSOAS (IDDADOSPESSOAS)ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PASSAGEIRO ADD CONSTRAINT FK_VIAGENS_PASSAGEIRO FOREIGN KEY (ID_VIAGEM) REFERENCES VIAGENS (IDVIAGENS)ON DELETE CASCADE ON UPDATE CASCADE;  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.