Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''trigger''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 26 registros

  1. Tenho uma tabela de cadastro do SQL Server, tenho uma coluna que apresenta o status desse cadastro ('A','I','S','C'). Criei um campo com nome Update_data, que receberá um datatime toda vez que o cliente alterar o status do cadastro. Isso também vale para um insert. Estou com dúvidas, pois nunca criei uma Trigger em sql server. Ex: da minha tabela ID | Processo | status | Update_data 1 | A33 | A | null 2 | A34 | I | null 3 | A55 | A | null Não consegui avançar no seguinte exemplo abaixo trigger: CREATE TRIGGER atualizaData ON cadastro AFTER INSERT,UPDATE AS IF INSERT OR UPDATE(status) BEGIN UPDATE cadastro SET Update_data = GETDATE() WHERE id = id_que_foi_modifica/inserida END Ao final, será atualizado com a data atual somente se houver modificação ou inserção no campo da situação.
  2. gmadeira

    Triggers

    Boa tarde, tenho 2 tabelas "prodvdarm" que cadastro produtos de ema empresa com: codVendedor - int, codArmar - int, quantidade int, valor - numeric 12,2, dataentra - data tabela "entradarm" codVendedor - int, codArmar - int, quantidade int, valor - numeric 12,2, Conheço pouco de triggers então pelos exemplos tentei fazer esta que te enviei, preciso de uma para entrar com os dados checar se existe este código vendedor e código armarinho, existindo atualiza(update) a quantidade e o valor - se não existir entra com novos dados(insert) fia assim mais ta dando erro CREATE DEFINER=`root`@`localhost` TRIGGER `bailledados`.`trg_entradarm_entrada` BEFORE INSERT ON `entradarm` FOR EACH ROW BEGIN declare codVendedor int; declare codArmar int; select codVendedor codArmar from prodvdmat; IF (codVendedor <> new.codVendedor and codArmar <> new.codArmar) then insert into prodvdmat(codVendedor, codArmar, quantidade, valor, datacompra) values (new.codVendedor, new.codArmar, new.quantidade, new.valor, now()); else UPDATE prodvdmat SET quantidade = quantidade + new.Quantidade, valor = valor + new.valor WHERE codVendedor = new.codVendedor and codArmar = new.codArmar; end if; END
  3. gmadeira

    Trigger

    Boa tarde, Tenho a seguinte tabela: CREATE TABLE prodvdedor (codPrdvdor int(10) NOT NULL AUTO_INCREMENT,codVendedor int(11) NOT NULL,codTecido int(11) NOT NULL,codCor int(11) NOT NULL,medida decimal(10,2) DEFAULT NULL,stockMedidas decimal(10,2) DEFAULT NULL,peso decimal(10,4) DEFAULT NULL,stockPeso decimal(10,4) DEFAULT NULL,dataCompra date NOT NULL,valor decimal(10,2) NOT NULL,PRIMARY KEY (codPrdvdor),KEY PK_prodvdedor_vendededor_idx (codVendedor),KEY Pk_prodvdedor_tecidos_idx (codTecido),KEY Pk_prodvdedor_cores_idx (codCor),CONSTRAINT Pk_prodvdedor_cores FOREIGN KEY (codCor) REFERENCES cores (codCor) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT Pk_prodvdedor_tecidos FOREIGN KEY (codTecido) REFERENCES tecidos (codTecido) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT PK_prodvdedor_vendedores FOREIGN KEY (codVendedor) REFERENCES vendedores(codVendedor) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;Pciso criar uma trigger preciso criar uma trigger para atualizar os campos stockMedidas e stockPeso, quando digito os dados ela procura se tem outra informação com os campos pedidos e atualiza, fiz da seguinte maneira: CREATE DEFINER=`root`@`localhost` TRIGGER `bailledados`.`trg_AtualizarProdVendor` BEFORE INSERT ON `prodvdedor` FOR EACH ROW BEGIN SET @stockAntigo = (SELECT stockMedidas FROM prodvdedor WHERE codVendedor=new.codVendedor and codTecido=new.codTecido and codCor=new.codCor); UPDATE prodvdedor SET stockMedidas=@stockAntigo+new.medida WHERE codVendedor=new.codVendedor and codTecido=new.codTecido and codCor=new.codCor; SET @stockAntigo1 = (SELECT stockPeso FROM prodvdedor WHERE codVendedor=new.codVendedor and codTecido=new.codTecido and codCor=new.codCor); UPDATE prodvdedor SET stockPeso=@stockAntigo1+new.peso WHERE codVendedor=new.codVendedor and codTecido=new.codTecido and codCor=new.codCor; SET @valorAntigo = (SELECT valor FROM prodvdedor WHERE codVendedor=new.codVendedor and codTecido=new.codTecido and codCor=new.codCor); UPDATE prodvdedor SET valor=@valorAntigo1+new.valor WHERE codVendedor=new.codVendedor and codTecido=new.codTecido and codCor=new.codCor; END Só que não funciona da erro: insert into bailledados.prodvdedor (codCor, codTecido, codVendedor, medida, stockMedidas, peso, stockPeso, dataCompra, valor) values (?, ?, ?, ?, ?, ?, ?, ?, ?) WARN: SQL Error: 1442, SQLState: HY000 ERROR: Can't update table 'prodvdedor' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. Informações: could not execute statement
  4. Leandro de Jesus

    IF's na Trigger

    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;
  5. Leandro de Jesus

    Comparar campos após o Trigger

    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
  6. brunonative

    Trigger de Acordo com Data e Hora

    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?
  7. 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!
  8. 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;
  9. MauVirtual

    Usar Trigger? Procedure? Ambas?

    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;
  10. Lucas Antonio Paiva

    duvida

    gente tenho essa trigger set new.divida_final= new.negativo - new.pago; tabela fiado, com os campos id,nome cliente,negativo ,pago e divida final,fuciona mais quando eu do um update fiado set pago= 12 where id ='7'; o comando fuciona de boa so que no campo divida_final ele n atualiza o valor alguem pode me ajudar :\
  11. marcelocardoso

    Redirecionar para ID

    Pessoal! 98% pronto o código, porém, olhem só: <script type="text/javascript"> $(document).ready(function() { //função para pegar URL e mostrar paramêtros $.extend({ getURL: function(){ var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); //quebra cada parametro e separa for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; }, getURL: function(name){ return $.getURL()[name]; var varAcao = $.getURL('acao'); } $(location).attr('id',$("#menu_confirmacoes").slideUp("slow")); }); }); </script> O código acima, pega a URL, e faz um SPLIT para separar os paramêtros, mas tipo: consigo pegar tudo o que preciso, na BOA. Mas, como FAÇO para após tudo isso, redirecionar para um determinado ID com efeito slidedown, slideUP e etc... Procurei na internet sobre trigger, e demais formas, não encontrei, será que é possível o pessoal mais avançado em JQ realizar isso. Já que será CAPTURADO o endereço da URL, pegar o parametro e depois sim, REDIRECIONAR para um ID dentro da página????? ESTOU USANDO ISSO: teria que ser mais ou menos assim. $(location).attr('id',$("#menu_confirmacoes").slideUp("slow")); Sugestões para isso, agradeço. Só falta isso, se assim for possível realizar isso...
  12. Senhores(as), Há tempos, e depois de muitas pesquisas, ainda estou com o problema em aberto: 1. Ao atualizar uma coluna de uma determinada linha de uma tabela, 2. Mover ou copiar essa linha para outra tabela (Ex.: tableBackup), e APAGAR essa linha na tabela atual. Estou usando trigger AFTER UPDATE na tabela que é atualizada para copiar a linha para outra tabela e funciona. Contudo, na "tabelaBackup" que recebe a linha, eu usei trigger AFTER INSERT para apagar a linha na tabela de origem e não funciona: -- O erro: #1442 - Can't update table 'produtos' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. Eu li que não é possível executar dois comandos de alteração na mesma tabela 'aberta', é o que o erro acima diz. Alguém tem uma solução ou ajuda? Agradeço. TRIGGER AFTER UPDATE na tabela origem: CREATE TRIGGER `Copiar` AFTER UPDATE ON `tabela1` FOR EACH ROW BEGIN IF NEW.a IS NOT NULL THEN SET @ID = NEW.`id`; INSERT INTO tabelaBackup SELECT * FROM tabela1 WHERE `id`= @ID AND `a` IS NOT NULL; END IF; END TRIGGER AFTER INSER na tabela destino: CREATE TRIGGER `Apagar` AFTER INSERT ON `tabelabackup` FOR EACH ROW BEGIN DELETE FROM tabela1 WHERE `id` = @ID AND `a` IS NOT NULL; END
  13. Geraldo Silva

    trigger para criar e atualizar saldo em uma tabela

    olá pessoal. sou novo no forum e também no assunto trigger para o mysql e precisei usar este recurso, mas não estou conseguindo chegar ao resultado que gostaria, por isso venho aqui pedir ajuda de vocês. seguinte: tenho uma tabela 'lancamentos' com o campos [iD;HISTORICO;TIPO;VALOR;SALDO] [Tipo = Debito (D) ou Credito ©] e tenho criar uma trigger pra ser disparada no BEFORE INSERT para calcular o saldo e inserir no campo SALDO. vejam exemplo abaixo que já encontrei em outro post aqui. CREATE TRIGGER `SaldoAtual` BEFORE INSERT ON `lancamentos` FOR EACH ROW BEGIN DECLARE saldoAnterior DECIMAL(10,2); SET saldoAnterior = (SELECT L.SALDO FROM lancamentos L ORDER BY L.ID DESC LIMIT 1); IF saldoAnterior <> '' THEN IF (NEW.TIPO = 'C') THEN SET NEW.SALDO = saldoAnterior + NEW.VALOR; ELSE SET NEW.SALDO = saldoAnterior - NEW.VALOR; END IF; ELSE SET NEW.SALDO = NEW.VALOR; END IF; END esse exemplo funciona bem para o insert, mas existe outra dificuldade e não tenho conseguido resolver. Preciso ter outra trigger no BEFORE UPDATE da mesma tabela que se eu alterar um valor anterior por exemplo esta trigger atualize o saldo da linha alterada e de todas as outras linhas que existirem depois dela para que o saldo fique correto. espero ter me feito compreender e se alguém puder me ajudar com algum exemplo eu ficarei muito grato.
  14. cesar.graeff

    LAST_INSERT_ID

    Bom dia, Estou com alguns problemas em relação ao LAST_INSERT_ID do mysql. Tenho uma tabela de usuários onde o id não é AUTO_INCREMET, o id é gerado pela trigger a seguir: CREATE TRIGGER `id_usuarios` BEFORE INSERT ON `usuarios` FOR EACH ROW BEGIN SET NEW.id = (SELECT COALESCE(MAX(id),0) + 1 FROM usuarios WHERE empresa = NEW.empresa); END Porém desta maneira não consigo que seja retornado o id pelo LAST_INSERT_ID(). Teria alguma form de setar este valor do NEW.id para ser retornado pelo LAST_INSERT_ID() ?
  15. Latorre

    Validação em Trigger

    Olá, estou com uma dúvida e não consigo encontrar uma solução, preciso criar uma trigger que verifique se já existe esse campo inserido em uma outra tabela, caso não exista ele faz o insert o meu insert está dessa forma: CREATE OR REPLACE TRIGGER "SCO_TRG_GERA_SENHA" AFTER UPDATE on laudo_paciente REFERENCING NEW AS N OLD AS A FOR EACH ROW BEGIN insert into sco_laudo(nr_prescricao, nr_senha, dt_validade) values (:N.nr_prescricao, DBMS_RANDOM.STRING('x',8), sysdate); end; Como faço pra fazer uma verificação se existe um valor igual de nr_prescrição na tabela sco_laudo? Porque se existir não posso dar um insert, pois é um numero único.
  16. Bom dia, Preciso de uma trigger para quando o campo PDC.TP_STATUS passar para o Status de FECHADO sera preenchido o campo PDC.DH_FECHAMENTO com a data e o horário que ele foi fechado e que pegue estes dados e altere na coluna AT.DT_ALTA E AT.HR_ALTA da tabela ATENDIME, sendo assim pegara os dados da primeira e alterar na segunda.
  17. Olá, sou novo no forum, achei muito interessante as informações por aqui, espero poder ajudar a comunidade e aprender bastante também. Estou tentando configurar um trigger para ser rodado quando uma tabela é atualizada (gostaria que o trigger fosse rodado apenas quando um campo específico da tabela passa de 2) e neste momento ele teria que rodar um delete primeiro (para casos em que o processo já tinha sido efetuado e os valores foram alterados) seguido de um insert. Quase não tenho conhecimento de sql além de simples selects, updates, etc... Estou dando uma estudada e pesquisando bastante, porém surgiu uma urgência na implantação deste comando e não estou conseguindo achar nenhum exemplo prático para me basear, qualquer sugestão é bem vinda. Abaixo o caso: tenho uma TBL_COMPRAS_NOTAFISCAL_ENTRADA em que quando o campo status nela for alterado pra 2 ele deveria fazer um delete e depois um insert na TBL_CONTABIL_LANCAMENTOS_CTB pegando informações da TBL_CUSTOS_DESDOBRADOS usando o select abaixo: SELECT A.CD_LANCAMENTO, A.CD_ORIGEM, 1 NR_PARCELA, 1 CD_ITEM_PARCELA, A.CD_EMPRESA, B.CD_FILIAL, D.CD_CONTA_CTB CD_CONTA_DEBITO, C.CD_CONTA CD_CONTA_CREDITO, D.CD_HISTORICO, A.DT_LANCAMENTO, NULL DS_COMPLEMENTO , B.NR_DOCUMENTO, SUM(A.VL_CUSTO) AS VL_LANCAMENTO, A.DS_NOME_FORMULARIO DS_TEXTO, A.CD_USUARIO, NULL CD_CHAVE, A.CD_USUARIOAT, B.DT_CADASTRO, B.DT_ATUALIZACAO, A.CD_LANCAMENTO, B.CD_FORNECEDOR, 1 NR_PARCELAS, 'Desdobramento NF entrada' DS_OBS FROM TBL_CUSTOS_DESDOBRADOS A, TBL_COMPRAS_NOTAFISCAL_ENTRADA B, TBL_CONTABIL_PLANO_CONTAS C, TBL_CONTABIL_PLANO_CONTAS_GERENCIAL D, TBL_ENTIDADES E WHERE A.CD_LANCAMENTO = B.CD_ENTRADA AND A.CD_CONTA_GERENCIAL = D.CD_CONTA_GERENCIAL AND B.CD_FORNECEDOR = E.CD_ENTIDADE AND A.CD_EMPRESA = D.CD_EMPRESA AND E.NR_CPFCNPJ = C.NR_CPFCNPJ AND C.CD_CONTA > 500000 AND A.CD_EMPRESA = C.CD_EMPRESA AND A.CD_LANCAMENTO = @cdlanc GROUP BY A.CD_LANCAMENTO, A.CD_ORIGEM, A.CD_EMPRESA, B.CD_FILIAL, D.CD_CONTA_CTB, C.CD_CONTA, D.CD_HISTORICO, A.DT_LANCAMENTO, B.NR_DOCUMENTO, A.DS_NOME_FORMULARIO, A.CD_USUARIO, A.CD_USUARIOAT, B.DT_CADASTRO, B.DT_ATUALIZACAO, B.CD_FORNECEDOR O "@CDLANC" viria da primeira tabela, do lançamento em que é alterado o status pra 2, porém não sei como declarar isso exatamente (para que ele não execute o processo em todas cada vez que há a alteração de status, o que ia demorar bastante...) Qualquer dica, orientação ou sugestão é muito bem vinda
  18. cesar.graeff

    MySQL Trigger

    Bom dia, Estou precisando fazer uma trigger BEFORE UPDATE para verificar se realmente ouve alterações no registro e se não houver cancelar a edição Exemplo: Tenho uma tabela clientes: id | nome | data_criado | data_alterado 1 | TESTE | 2017-05-22 00:00:00 | 2017-05-22 00:00:00 2 | OUTRO | 2017-05-22 00:00:00 | 2017-05-22 00:00:00 O campo data_alterado está marcado como ON_UPDATE_CURRENT_TIMESTAMP Então irei executar o seguinte update: UPDATE clientes SET nome = 'TESTE' WHERE id = 1 A trigger deveria analisar e não fazer o update deste registro visto que o nome continua igual mantendo a mesma data no campo data_alterado Porém minha tabela tem vários campos e acredito que fazer a verificação campo a campo não seria o ideal Alguém já fez algo parecido ou sabe como resolver o problema?
  19. Boa tarde, Estou tentando criar um evento para limpar linhas da minha tabela de 1 dia atrás, para que execute a cada 15 minutos, ja fiz de varias formas mas meu MySQL nao executa, o que pode estar errado? alguem pode ajudar? Criei meu evento desta forma: CREATE EVENT limpeza on schedule every 15 minute do delete from tempdat where tdate < DATE_SUB(NOW(), INTERVAL 1 DAY); Obrigado! Detalhe, quando rodo o comando na mão ele limpa as linhas desejadas... mas quando crio o evento, ele nao executa sozinho a cada 15 minutos...
  20. Bom dia pessoal, Preciso saber como crio uma trigger ou um evento para que, a cada 24horas (ou todo dia meia-noite) a tabela seja limpa mantendo somente os ultimos 120 registros da tabela ordenando pelo campo ID. Como faço? Esses são os dados da minha tabela: mysql> select * from tempdat ORDER BY id DESC LIMIT 50; +-----+------------+----------+-----------+-------------+---------+----------------------------+ | id | tdate | ttime | zone | temperatura | umidade | image | +-----+------------+----------+-----------+-------------+---------+----------------------------+ | 349 | 2017-04-24 | 09:40:02 | principal | 21 | 45 | photo-24-04-2017.09.39.jpg | | 348 | 2017-04-24 | 09:30:10 | principal | 19 | 46 | photo-24-04-2017.09.29.jpg | | 347 | 2017-04-24 | 09:20:02 | principal | 19 | 46 | photo-24-04-2017.09.19.jpg | | 346 | 2017-04-24 | 09:10:02 | principal | 19 | 47 | photo-24-04-2017.09.09.jpg | | 345 | 2017-04-24 | 09:00:03 | principal | 19 | 46 | photo-24-04-2017.08.59.jpg | | 344 | 2017-04-24 | 08:50:02 | principal | 19 | 47 | photo-24-04-2017.08.49.jpg | | 343 | 2017-04-24 | 08:40:07 | principal | 18 | 48 | photo-24-04-2017.08.39.jpg |
  21. felipekraemer

    Problema com Trigger

    Olá, estou tendo um problema com uma trigger. Explicando a situação: Eu tenho as seguintes tabelas: CREATE TABLE `pessoas` ( `codigo` int(11) NOT NULL, `nome` varchar(70) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; CREATE TABLE `programa_semanal` ( `semana` date NOT NULL, `tema` varchar(100) CHARACTER SET utf8 DEFAULT NULL, `presidente` int(11) DEFAULT NULL, `orador` int(11) DEFAULT NULL, PRIMARY KEY (`semana`), KEY `FK_Orador_idx` (`orador`), KEY `FK_Presidente_idx` (`presidente`), CONSTRAINT `FK_Orador` FOREIGN KEY (`orador`) REFERENCES `pessoas` (`codigo`), CONSTRAINT `FK_Presidente` FOREIGN KEY (`presidente`) REFERENCES `pessoas` (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; O que acontece: Eu tenho um cadastro de pessoas e um cadastro de programação semanal que vou alimentando no início de cada mês as semanas seguintes. Neste cadastro antecipado, informo a semana e o tema, e as informações são inseridas na tabela programa_semanal. Alguns dias antes de determinada semana chegar, eu preciso editar a programação e escolher, dentre a lista de pessoas, quem vai ser o presidente e quem vai ser o orador, e as informações são editadas na tabela programa_semanal. Eu posso também, caso a semana não tenha passado, editar a programação semanal e escolher outras pessoas como presidente e orador. Para evitar que algumas pessoas sejam escolhidas com mais frequência do que outras como presidentes ou oradores, eu criei outra tabela que tem a seguinte estrutura: CREATE TABLE `participacao` ( `codigo_pessoa` int(11) NOT NULL, `semana` date NOT NULL, `tipo_participacao` varchar(1) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`codigo_pessoa`,`semana`), CONSTRAINT `FK_Pessoa` FOREIGN KEY (`codigo_pessoa`) REFERENCES `pessoas` (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; Quando eu gravar as alterações na tabela programa_semanal, a ideia é que a trigger faça uma inserção ou uma alteração nesta tabela participacao, levando em consideração o seguinte: Quando eu faço INSERT na tabela programa_semanal, as colunas 'presidente' e 'orador' ficam com valor NULL, pois estou apenas cadastrando as semanas antecipadamente. Neste caso a trigger não deve fazer nada pois o presidente e o orador ainda não foram escolhidos. Quando eu faço UPDATE na tabela programa_semanal é quando as colunas 'presidente' e 'orador' ficam com valor inteiro. Neste caso, a trigger deve validar se o valores antigos das colunas 'presidente' e 'orador' na tabela programa_semanal são nulos: - Se forem nulos, a trigger deve fazer INSERT na tabela participação, pois é a primeira vez que o presidente e o orador foram definidos para aquela semana. - Se não forem nulos, a trigger deve fazer UPDATE na tabela participacao, pois resolvi escolher outra pessoa como presidente ou orador naquela semana. - Tanto no INSERT quanto no UPDATE as colunas 'codigo_pessoa' e 'semana' vem da tabela programa_semanal e a coluna 'tipo_participacao' recebe o valor 'O' caso seja orador, ou valor 'P' caso seja presidente; Isso me permitiria, na hora de escolher o presidente e o orador para determinada semana, fazer um SELECT ordenando pelas pessoas que a mais tempo não são escolhidas como presidente ou como orador, para que todos tenham as mesmas chances de participar. No momento, a trigger está definida assim: DELIMITER $$ DROP TRIGGER IF EXISTS updateParticipantes; $$ DELIMITER // CREATE TRIGGER updateParticipantes AFTER UPDATE ON programa_semanal FOR EACH ROW BEGIN IF old.presidente <> new.presidente THEN IF old.presidente IS NULL THEN INSERT INTO participacao (codigo_pessoa, semana, tipo_participacao) VALUES (new.presidente, new.semana, 'P'); ELSE UPDATE participacao SET codigo_pessoa = new.presidente WHERE participacao.semana = new.semana AND participacao.tipo_participacao = 'P'; END IF; END IF; IF old.orador <> new.orador THEN IF old.orador IS NULL THEN INSERT INTO participacao (codigo_pessoa, semana, tipo_participacao) VALUES (new.orador, new.semana, 'O'); ELSE UPDATE participacao SET codigo_pessoa = new.orador WHERE participacao.semana = new.semana AND participacao.tipo_participacao = 'O'; END IF; END IF; END Só que ela não está funcionando e eu não consigo entender o por quê. Quando eu executo este script para deleção / criação da trigger não dá nenhum erro de execução, então até onde eu entendo não há erro de sintaxe na definição da trigger. Só que quando atualizo a tabela programa_semanal com valores para presidente e orador, nada acontece na tabela participacao. Mas se eu colocar algum INSERT ou UPDATE logo após o BEGIN, isso funciona, então aparentemente o problema é nos IFs. Alguém poderia me ajudar a entender o que está errado? Muito obrigado!
  22. Webr

    Trigger MYSQL

    Salve galera tudo bem ? Estou tentando criar um trigger no MYSQL , mas não está saindo , kk , tentei na mão , tentei usando a interface ... O Objetivo é quando um horário via timestamp for gerado no BD ele acrescente 1 dia útil e cadastre em outra linha da mesma tabela. Não queria usar o PHP, queria que o banco automatize e achei que com Trigger fosse dar certo, gostaria de saber a opinião de vocês... vou anexar a imagem do comando pelo PHPMYADMIN . Agradeço a atenção ... Abraços !
  23. Olá pessoal boa tarde, estou tentando criar uma trigger para atualizar uma coluna da mesma tabela. Após inserir ou atualizar a tabela, a coluna irá receber o valor de outra coluna, mas em MD5. CREATE OR REPLACE FUNCTION setHash() RETURNS TRIGGER AS $hashCPF$ BEGIN UPDATE tb_teste SET cpf_cnpj_hash = md5(NEW.cpf_cnpj::Text) WHERE cpf_cnpj = NEW.cpf_cnpj; RETURN new; END; $hashCPF$ language plpgsql; CREATE TRIGGER hashCPF AFTER INSERT OR UPDATE ON tb_teste FOR EACH ROW EXECUTE PROCEDURE setHash(); só que na hora de inserir os dados na tabela apresenta o seguinte erro: ERROR: stack depth limit exceeded HINT: Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate. CONTEXT: SQL statement "UPDATE tb_teste SET cpf_cnpj_hash = md5(NEW.cpf_cnpj::Text) WHERE cpf_cnpj = NEW.cpf_cnpj" PL/pgSQL function sethash() line 5 at SQL statement SQL statement "UPDATE tb_teste SET cpf_cnpj_hash = md5(NEW.cpf_cnpj::Text) WHERE cpf_cnpj = NEW.cpf_cnpj" Não sei o que está acontecendo, alguém pode dar uma luz.
  24. brawrj

    Trigger não atualiza tabela.

    Boa noite caros colegas, preciso de ajuda com um trigger que implementei em uma tabela, possuo um BD com apenas 3 tabelas: CATEGORIA que vai dizer se é um Receita ou Despesa, outra tabela MOVIMENTO onde entro com valor, descrição...etc e outra tabela SALDO que vai receber um update toda vez que movimento receber um INSERT/UPDATE/DELETE...já tentei diversas formas mas não consigo com que o trigger atualize minha tabela saldo..quem puder me orientar ficarei muito grato. Abaixo segue script do BD. create database DB_APS; create table movimento( id_movimento int(11) not null auto_increment, id_categoria int(11) not null, desc_movimento varchar(50) not null, recorrencia char(1) not null, valor decimal(10,2) not null, primary key (id_movimento, id_categoria), index entrada_FKINDEX1(id_categoria) ); alter table movimento add constraint CNT_SN_RECORRENTE check( SN_RECORRENTE IN ('S', 'N')); create table categoria( id_categoria int (11) not null auto_increment, tp_categoria char(1) not null, primary key (id_categoria) ); alter table categoria add constraint CNT_tp_categoria check( tp_categoria in ('R', 'D')); create table saldo( id_saldo integer(11) not null auto_increment, id_movimento integer not null, id_categoria integer not null, data timestamp default current_timestamp(), valor_saldo decimal (10,2), primary key ( id_saldo, id_movimento, id_categoria), index entrada_FKIndex2(id_movimento), index entrada_FKIndex3(id_categoria) ); delimiter $$ create trigger TGR_atualiza_saldo after insert on movimento for each row Begin declare tp_categoria varchar(1); declare valor float; declare valor_saldo float; set tp_categoria = (select tp_categoria from categoria); set valor = (select valor from movimento); set valor_saldo =(select valor from saldo); if(tp_categoria = 'R') then update saldo set valor_saldo = ( valor_saldo + valor ); end if; end $$ delimiter ;
  25. Adauto Junior_64247

    Trigger Oracle não funciona no Delphi 7

    Pessoa preciso de ajuda, seguinte criei uma trigger no oracle que antes de inserir o registro insere um numero sequencial em outra tabela ou em uma tabela de log caso de erro. Até ai blz a trigger esta perfeita e quando dou um insert pelo banco funciona perfeito. Porém quando dou insert pela aplicaçao delphi a inserção na tabela de controle ou no log não funciona. porém eu sei que a trigger esta sendo executada pois antes da inserção ela pega um valor de sequencia. alguém pode me ajudar?
×

Informação importante

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