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
statementIF tg\u op='UPDATE'和new.status='T'上进行操作,然后…