Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ericmaicon

[Resolvido] Trigger quando der UPDATE = 0!

Recommended Posts

Olá pessoal!!

 

ultimamente descobri o mundo dos BDS e o tanto q se pode fazer proeza com eles!!

hahah

 

porém estou meio lento ainda..e tava afim de fazer uma trigger bacana aqui!!

 

tenho duas tabelas:

 

CREATE TABLE "public"."Usuario" (
  "idUsuario" INTEGER NOT NULL, 
  "nome" VARCHAR(150), 
  "usuario" VARCHAR(20) NOT NULL, 
  "senha" VARCHAR(20) NOT NULL, 
  "qntAcesso" INTEGER DEFAULT 0 NOT NULL, 
  "habilitado" CHAR(1) DEFAULT 'H'::bpchar NOT NULL, 
  CONSTRAINT "Usuario_Chave_Primaria" PRIMARY KEY("idUsuario"), 
  CONSTRAINT "Usuario_Chave_Unica" UNIQUE("usuario")
) WITHOUT OIDS;

e

 

CREATE TABLE "public"."Status" (
  "data" DATE NOT NULL, 
  "hora" TIME WITHOUT TIME ZONE NOT NULL, 
  "ip" VARCHAR(15) DEFAULT '127.0.0.1'::character varying NOT NULL, 
  "idUsuario" INTEGER NOT NULL, 
  CONSTRAINT "Fk_Status_para_Usuario" FOREIGN KEY ("idUsuario")
    REFERENCES "public"."Usuario"("idUsuario")
    ON DELETE CASCADE
    ON UPDATE CASCADE
    NOT DEFERRABLE
) WITHOUT OIDS;

vejam que estão relacionadas..

 

meu sistema quando o cara loga nele, ele atualiza a tabela Usuario colocando o qntAcesso = 0...

 

eu queria fazer uma Trigger que toda vez q essa atualização fosse feita..ele inseria na tabela Status a data, hora, ip e idUsuario..

 

detalhe: eu queria q fosse automático..sem eu precisar chamar a trigger

 

se nao tiver como pegar o ip pelo postgres..eu tiro esse campo..nao tem problema!!

 

eu comecei a fazer..mas travei!!!

 

CREATE TRIGGER "InserirStatus" AFTER UPDATE 
ON "public"."Usuario" FOR EACH ROW 
EXECUTE PROCEDURE ();

eu sei q teria q ter um

 

INSERT INTO "Status" (data, hora, ip, "idUsuario") VALUES (now(), now(), "192.168.254.1", variable_name);

mas não tem idéia de onde seja..e como fazer para q só fizesse a trigger qd fosse update = 0!!

 

alguém pode me ajudar?

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Double

 

só pra constar..consegui!!

 

pra quem tiver a mesma dúvida:

 

CREATE TRIGGER "Usuario_Trigger_Status" BEFORE UPDATE 
ON "public"."Usuario" FOR EACH ROW 
EXECUTE PROCEDURE "public"."InsereStatusAoLogar"();

BEGIN
	IF(NEW."qntAcesso" = 0) THEN
    	INSERT INTO "Status" (data, hora, "idUsuario") VALUES (now(), now(), OLD."idUsuario");
    END IF;
    return new;
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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