PostgreSQL:触发器更新

PostgreSQL:触发器更新,postgresql,postgresql-11,Postgresql,Postgresql 11,我有t\u a和t\u b表,我需要当表t\u b中的统计数据从F更改为t\u b时,t\u a中的股票比t\u b中的金额减少 坐在桌子上 -------------- | id | stock | -------------- | 1 | 20 | | 2 | 40 | -------------- t_b表 ----------------------- | id | amount | stats | ----------------------- | 1 | 5

我有
t\u a
t\u b
表,我需要当表
t\u b
中的统计数据从
F
更改为
t\u b
时,
t\u a
中的
股票
t\u b
中的
金额减少

坐在桌子上

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

-----------------------
| 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();

我想在触发器的
stats='T'
被解决时添加一个条件,我只是在函数中添加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;

你只需要在
IF
statement
IF tg\u op='UPDATE'和new.status='T'上进行操作,然后…