Postgres规则或触发器在更新单行后更新多行



我有一个形式的postgres表

id x_loc
1000 12.7
1500 13.2
1001 12.7
1502 13.2
1002 12.8

使用AFTER触发器:

create table loc_tbl (id integer, x_loc numeric);
insert into loc_tbl values (1000,12.7), (1500,13.2), (1001,12.7), (1502,13.2), (1002,12.8);
CREATE OR REPLACE FUNCTION public.x_loc_fnc()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
IF NEW.x_loc != OLD.x_loc THEN
UPDATE 
loc_tbl
SET 
x_loc = NEW.x_loc
WHERE 
left(NEW.id::varchar, 3) = left(id::varchar, 3);
END IF;
RETURN null;
END;
$function$
;
CREATE TRIGGER 
loc_trg 
AFTER UPDATE ON 
loc_tbl 
FOR EACH ROW EXECUTE FUNCTION 
x_loc_fnc();
select * from loc_tbl ;
id  | x_loc 
------+-------
1000 |  12.7
1500 |  13.2
1001 |  12.7
1502 |  13.2
1002 |  12.8
UPDATE loc_tbl SET x_loc = 12.9 WHERE id = 1000;
UPDATE 1
select * from loc_tbl ;
id  | x_loc 
------+-------
1500 |  13.2
1502 |  13.2
1001 |  12.9
1002 |  12.9
1000 |  12.9

您可以在此处使用函数并更新您的id,如果你认为它可以复制,那么使用铅,并为其他人加+1。我希望它能起作用。

最新更新