| 1 | DROP TRIGGER IF EXISTS trg_sync_account_balance_on_invoice ON public.invoices;
|
|---|
| 2 | CREATE OR REPLACE FUNCTION public.trg_fn_sync_account_balance_on_invoice()
|
|---|
| 3 | RETURNS trigger
|
|---|
| 4 | LANGUAGE plpgsql
|
|---|
| 5 | AS $$
|
|---|
| 6 | BEGIN
|
|---|
| 7 | IF TG_OP <> 'DELETE' THEN
|
|---|
| 8 | PERFORM public.fn_recalculate_account_balance(NEW.account_id);
|
|---|
| 9 | END IF;
|
|---|
| 10 | IF TG_OP = 'DELETE' THEN
|
|---|
| 11 | PERFORM public.fn_recalculate_account_balance(OLD.account_id);
|
|---|
| 12 | RETURN OLD;
|
|---|
| 13 | ELSIF TG_OP = 'UPDATE' AND OLD.account_id IS DISTINCT FROM NEW.account_id THEN
|
|---|
| 14 | PERFORM public.fn_recalculate_account_balance(OLD.account_id);
|
|---|
| 15 | END IF;
|
|---|
| 16 | RETURN NEW;
|
|---|
| 17 | END;
|
|---|
| 18 | $$;
|
|---|
| 19 |
|
|---|
| 20 | CREATE TRIGGER trg_sync_account_balance_on_invoice
|
|---|
| 21 | AFTER INSERT OR UPDATE OR DELETE ON public.invoices
|
|---|
| 22 | FOR EACH ROW
|
|---|
| 23 | EXECUTE FUNCTION public.trg_fn_sync_account_balance_on_invoice();
|
|---|