我有一个形式的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。我希望它能起作用。