Changes between Version 1 and Version 2 of Trigger2


Ignore:
Timestamp:
06/28/26 15:34:47 (3 hours ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Trigger2

    v1 v2  
    3030    IF TG_OP = 'DELETE' THEN
    3131        UPDATE transaction_account
    32         SET balance = balance - OLD.earned_amount + OLD.spent_amount
     32        SET balance = balance
     33            - COALESCE(OLD.earned_amount, 0)
     34            + COALESCE(OLD.spent_amount, 0)
    3335        WHERE transaction_account_id = OLD.transaction_account_id;
    3436
     
    3638    ELSIF TG_OP = 'INSERT' THEN
    3739        UPDATE transaction_account
    38         SET balance = balance + NEW.earned_amount - NEW.spent_amount
     40        SET balance = balance
     41            + COALESCE(NEW.earned_amount, 0)
     42            - COALESCE(NEW.spent_amount, 0)
    3943        WHERE transaction_account_id = NEW.transaction_account_id;
    4044
    4145    -- При ажурирање на постоечки запис
    4246    ELSIF TG_OP = 'UPDATE' THEN
    43         UPDATE transaction_account
    44         SET balance = balance
    45             - OLD.earned_amount + OLD.spent_amount
    46             + NEW.earned_amount - NEW.spent_amount
    47         WHERE transaction_account_id = NEW.transaction_account_id;
     47        IF OLD.transaction_account_id = NEW.transaction_account_id THEN
     48            UPDATE transaction_account
     49            SET balance = balance
     50                - COALESCE(OLD.earned_amount, 0)
     51                + COALESCE(OLD.spent_amount, 0)
     52                + COALESCE(NEW.earned_amount, 0)
     53                - COALESCE(NEW.spent_amount, 0)
     54            WHERE transaction_account_id = NEW.transaction_account_id;
     55        ELSE
     56            UPDATE transaction_account
     57            SET balance = balance
     58                - COALESCE(OLD.earned_amount, 0)
     59                + COALESCE(OLD.spent_amount, 0)
     60            WHERE transaction_account_id = OLD.transaction_account_id;
     61
     62            UPDATE transaction_account
     63            SET balance = balance
     64                + COALESCE(NEW.earned_amount, 0)
     65                - COALESCE(NEW.spent_amount, 0)
     66            WHERE transaction_account_id = NEW.transaction_account_id;
     67        END IF;
    4868    END IF;
    4969