Changes between Version 2 and Version 3 of WikiStart/Optimization/vtora_verzija


Ignore:
Timestamp:
04/01/25 22:00:03 (2 months ago)
Author:
203206
Comment:

c1

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart/Optimization/vtora_verzija

    v2 v3  
    6262
    6363}}}
     64
     65
     66
     67=== Trigger 2
     68
     69{{{
     70
     71
     72CREATE OR REPLACE FUNCTION after_transaction_trigger2()
     73RETURNS TRIGGER AS $$
     74BEGIN
     75    IF NEW.type = 'Deposit' THEN
     76        -- Log deposit as a self-transfer
     77        INSERT INTO transfer(s_id, r_id)
     78        VALUES (NEW.account_id, NEW.account_id);
     79
     80    ELSIF NEW.type = 'Withdrawal' THEN
     81        -- Log withdrawal as a self-transfer
     82        INSERT INTO transfer(s_id, r_id)
     83        VALUES (NEW.account_id, NEW.account_id);
     84
     85    ELSIF NEW.type LIKE '(MKD) Transfer Out to%' OR
     86          NEW.type LIKE '(USD) Transfer Out to%' OR
     87          NEW.type LIKE '(EUR) Transfer Out to%' OR
     88          NEW.type LIKE '(GBP) Transfer Out to%' THEN
     89         
     90        -- Extract recipient username and insert into transfer table
     91        INSERT INTO transfer(s_id, r_id)
     92        SELECT NEW.account_id,
     93               (SELECT id FROM account
     94                WHERE username = TRIM(SUBSTRING(NEW.type FROM POSITION('Transfer Out to ' IN NEW.type) + 15))
     95                LIMIT 1);
     96
     97    END IF;
     98   
     99    RETURN NEW;
     100END;
     101$$ LANGUAGE plpgsql;
     102
     103CREATE TRIGGER after_transaction2
     104AFTER INSERT ON transaction
     105FOR EACH ROW
     106EXECUTE FUNCTION after_transaction_trigger2();
     107
     108}}}
     109