Ola,
ik heb een trigger geschreven maar deze doet niet precies wat ik bedoel. Wel in grote lijnen maar net dat ene stukje niet
Eerst een korte uitleg:
de trigger wordt afgevuurd als in tabel B de kollom tekenen_budgethouder_1 gevuld wordt met een 1 of een 0.
Als dit gebeurd is de actie die moet worden uitgevoerd dat het veld count_tek_1 in tabel A wordt geupdate met een optelling van de velden tekenen_budgethouder_ 1 tot en met 9. Dus als al deze velden gevuld zijn met een 1 dan staat er een 10 in count_tek_1. Nu is het probleem dat hij bij het updaten van 1 veld, alle rijen vult bij count_tek_1 terwijl ik alleen wil dat hij dit doet voor de rij die ik geupdate heb.
Als ik namelijk bij tabel B, 1 veld update op een regel moet dit coresponderen met de regel in tabel A (er ligt een koppeling op KSTP_CODE) en niet op ALLE rijen in tabel A
Iemand enig idee?
Hieronder de trigger die ik geschreven heb.
CREATE OR REPLACE TRIGGER test
AFTER UPDATE ON b FOR EACH ROW
WHEN (OLD.TEKENEN_BUDGETHOUDER_1 <> NEW.TEKENEN_BUDGETHOUDER_1)
BEGIN
IF :NEW.TEKENEN_BUDGETHOUDER_1=0 THEN
UPDATE A
SET
COUNT_TEK_1 = :NEW.TEKENEN_BUDGETHOUDER_1 + :OLD.tekenen_budgethouder_2
+ :OLD.tekenen_budgethouder_3 + :OLD.tekenen_budgethouder_4
+ :OLD.tekenen_budgethouder_5 + :OLD.tekenen_budgethouder_6
+ :OLD.tekenen_budgethouder_7 + :OLD.tekenen_budgethouder_8
+ :OLD.tekenen_budgethouder_9 + :OLD.tekenen_budgethouder
WHERE :NEW.TEKENEN_BUDGETHOUDER_1= '0'
;
END if;
IF :NEW.TEKENEN_BUDGETHOUDER_1=1 THEN
UPDATE A
SET
COUNT_TEK_1 = :NEW.TEKENEN_BUDGETHOUDER_1 + :OLD.tekenen_budgethouder_2
+ :OLD.tekenen_budgethouder_3 + :OLD.tekenen_budgethouder_4
+ :OLD.tekenen_budgethouder_5 + :OLD.tekenen_budgethouder_6
+ :OLD.tekenen_budgethouder_7 + :OLD.tekenen_budgethouder_8
+ :OLD.tekenen_budgethouder_9 + :OLD.tekenen_budgethouder
WHERE :NEW.TEKENEN_BUDGETHOUDER_1= '1'
;
END IF;
END;
/
ik heb een trigger geschreven maar deze doet niet precies wat ik bedoel. Wel in grote lijnen maar net dat ene stukje niet
Eerst een korte uitleg:
de trigger wordt afgevuurd als in tabel B de kollom tekenen_budgethouder_1 gevuld wordt met een 1 of een 0.
Als dit gebeurd is de actie die moet worden uitgevoerd dat het veld count_tek_1 in tabel A wordt geupdate met een optelling van de velden tekenen_budgethouder_ 1 tot en met 9. Dus als al deze velden gevuld zijn met een 1 dan staat er een 10 in count_tek_1. Nu is het probleem dat hij bij het updaten van 1 veld, alle rijen vult bij count_tek_1 terwijl ik alleen wil dat hij dit doet voor de rij die ik geupdate heb.
Als ik namelijk bij tabel B, 1 veld update op een regel moet dit coresponderen met de regel in tabel A (er ligt een koppeling op KSTP_CODE) en niet op ALLE rijen in tabel A
Iemand enig idee?
Hieronder de trigger die ik geschreven heb.
CREATE OR REPLACE TRIGGER test
AFTER UPDATE ON b FOR EACH ROW
WHEN (OLD.TEKENEN_BUDGETHOUDER_1 <> NEW.TEKENEN_BUDGETHOUDER_1)
BEGIN
IF :NEW.TEKENEN_BUDGETHOUDER_1=0 THEN
UPDATE A
SET
COUNT_TEK_1 = :NEW.TEKENEN_BUDGETHOUDER_1 + :OLD.tekenen_budgethouder_2
+ :OLD.tekenen_budgethouder_3 + :OLD.tekenen_budgethouder_4
+ :OLD.tekenen_budgethouder_5 + :OLD.tekenen_budgethouder_6
+ :OLD.tekenen_budgethouder_7 + :OLD.tekenen_budgethouder_8
+ :OLD.tekenen_budgethouder_9 + :OLD.tekenen_budgethouder
WHERE :NEW.TEKENEN_BUDGETHOUDER_1= '0'
;
END if;
IF :NEW.TEKENEN_BUDGETHOUDER_1=1 THEN
UPDATE A
SET
COUNT_TEK_1 = :NEW.TEKENEN_BUDGETHOUDER_1 + :OLD.tekenen_budgethouder_2
+ :OLD.tekenen_budgethouder_3 + :OLD.tekenen_budgethouder_4
+ :OLD.tekenen_budgethouder_5 + :OLD.tekenen_budgethouder_6
+ :OLD.tekenen_budgethouder_7 + :OLD.tekenen_budgethouder_8
+ :OLD.tekenen_budgethouder_9 + :OLD.tekenen_budgethouder
WHERE :NEW.TEKENEN_BUDGETHOUDER_1= '1'
;
END IF;
END;
/