Pessoal, preciso criar uma trigger para toda vez que for inserido um registro na tabela de usuarios ela execute um insert em uma outra tabela.
Não estou conseguindo fazer isso, na trigger eu só consigo chamar uma function ou procedure? Não tem como eu rodar uma insert por exemplo?
Não estou conseguindo criar a trigger, desde já agradeço qualquer help.
Veja se isso te ajuda:
http://forum.imasters.com.br/topic/436857-criando-trigger-para-inserir-dados-de-uma-tabela-em-outra/
Gabriel,
Uma trigger pode disparar tanto um comando DML (INSERT, UPDATE, etc), quanto uma função ou procedure. O link que o Thyago passou pode te ajudar a resolver isto.
Pessoal, agradeço a ajuda.
Estou criando a seguinte trigger:
CREATE TRIGGER “newUser” AFTER INSERT ON “private_users” FOR EACH ROW
BEGIN
INSERT INTO renamilho.usuario (usuarioid,name,email,empresaid) values (NEW.usuarioid, NEW.name, NEW.email, NEW.empresaid);
END;
E está apresentando o seguinte erro:
Erro na consulta: ERRO: erro de sintaxe em ou próximo a “BEGIN”
LINE 2: BEGIN
Creio que seja no insert, mas está tudo correto, estou usando postgree.
Gabriel,
A princípio eu não usaria aspas duplas no nome da trigger nem no nome da tabela.
Gabriel, veja se esse te ajuda:
Pelo o que estou pesquisando, parece que o postgree só aceita triggers procedurais, ou seja, que executam alguma função.
Consegui resolver pessoal, parece que é isso mesmo que citei acima.
Criei uma function, logo após uma trigger chamando a função.
Um diferencial das triggers deste banco de dados para outros é que no PostgreSQL as triggers são sempre associadas a funções de triggers e nos demais, criamos o corpo da trigger na própria declaração desta.
Pra começar tu deveria ter indicado que SGDB estava usando no primeiro post ou no titulo