2017-07-17 2 views
0

Voici les colonnes de ma table, TB_KELUHANinstruction IF-ELSE l'intérieur déclencheur dans l'oracle

"IDKELUHAN" NUMBER(20,0) NOT NULL ENABLE, 
"NAMA" VARCHAR2(10 BYTE), 
"IDUNIT" NUMBER(10,0), 
"TGL_KELUHAN" DATE DEFAULT sysdate, 
"KELUHAN" VARCHAR2(200 BYTE), 
"STATUS" VARCHAR2(10 BYTE), 
"IDPEGAWAI" NUMBER(10,0), 
"TGL_SELESAI" DATE DEFAULT sysdate, 
"ID_JENISKELUHAN" NUMBER(5,0), 
CONSTRAINT "TB_KELUHAN_PK" PRIMARY KEY ("IDKELUHAN") 

Je veux un déclencheur qui mettra à jour une colonne de ligne TGL_SELESAI à SYSDATE, lorsque le statut d'une ligne devient « SELESAI ». Voici le texte de la détente que j'ai essayé:

TRIGGER SELESAI 
AFTER UPDATE OF STATUS ON TB_KELUHAN 
FOR EACH ROW 
DECLARE 
    TGL_SELESAI DATE; 
BEGIN 
    IF :new.STATUS = 'SELESAI' 
    THEN 
     TGL_SELESAI:=SYSDATE; 
    END IF; 
END; 

Quand je change la valeur de STATUS « SELESAI », n'a pas changé le TGL_SELESAI correspondant. Pourquoi?

+0

je changé de après mise à jour avant la mise à jour, toujours pas de changement dans TGL_SELESAI – Apuranic

Répondre

1

Votre code initial définissait une variable PL/SQL locale, pas la colonne de la ligne et vous créiez un déclencheur AFTER UPDATE, pas un déclencheur BEFORE UPDATE. Essayez ceci:

CREATE OR REPLACE TRIGGER SELESAI 
BEFORE UPDATE OF STATUS ON TB_KELUHAN 
FOR EACH ROW 
BEGIN 
    IF :new.STATUS = 'SELESAI' 
    THEN 
     :new.TGL_SELESAI := SYSDATE; 
    END IF; 
END; 
+0

Pas encore changer TGL_SELESAI. L'erreur de code des déclencheurs est-elle – Apuranic

+0

Merci ça marche! :) – Apuranic