PostgreSQL:触发更新

PostgreSQL: Trigger update

我有 t_at_b table,当 FT 的统计数据发生变化时,我需要 tablet_b,t_a中的stockt_b中的amount减少.

t_a table

--------------
| id | stock |
--------------
| 1  | 20    |
| 2  | 40    |
--------------

t_b table

-----------------------
| id | amount | stats |
-----------------------
| 1  | 5      | F     |
| 2  | 7      | T     |
-----------------------

这是我的查询:

CREATE OR REPLACE FUNCTION public.fn_acc_a()
  RETURNS trigger AS
$BODY$DECLARE

BEGIN
 IF tg_op = 'UPDATE' THEN
  UPDATE public.t_a SET stock = stock-NEW.amount
  WHERE id = NEW.id; 
 END IF;
RETURN new;
END$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

------------------------------------------------------

CREATE TRIGGER trg_acc_a
  BEFORE UPDATE
  ON public.t_b
  FOR EACH ROW

  WHEN (pg_trigger_depth() = 0)
EXECUTE PROCEDURE public.fn_acc_a();

我想添加一个条件 when stats = 'T' on trigger

它解决了,我只是在函数中添加 if 条件

IF tg_op = 'UPDATE' THEN 
    IF NEW.STATUS ='T' THEN
       UPDATE public.t_a SET stock = stock-NEW.amount
       WHERE id = NEW.id;
    END IF;
END IF;