Search code examples
oracleplsqldatabase-trigger

How to fix: In a database of a monopoly game, if turn_number=0 (start turn), set bank account amount=3000;


trigger that in a database of a monopoly game, if turn_number=0 (start turn), set bank account amount=3000;

Create or replace trigger initial_turn
after insert on Recap_turn
for each row
when (new.turn_number=0)
declare 
    i integer;
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    i:=3000;
    update Recap_turn
    set bank_account_amount=i
    where (id_turn=:new.id_turn); commit;
end;

after the insert the bank_account_amount remain the same,instead of change to 3000


Solution

  • if you want to use trigger:

    CREATE OR REPLACE TRIGGER initial_turn
    BEFORE INSERT ON Recap_turn
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW 
    begin
        if inserting and :new.turn_number = 0 then
            :new.bank_account_amount := 3000;
        end if;
    end;