Я новичок в postgresql с расширением postgis. Я пытаюсь создать триггерную функцию, которая обновляет геометрический столбец geom (Linestring) в table_2 всякий раз, когда я вставляю или обновляю site_a, site_b в нем. Эти последние столбцы являются внешними ключами, ссылающимися на код_сайта в таблице_1.
таблица_1:
site_code | geom
-----------+----------------------------------------------------
MIT03 | 0101000020E61000009B55BFC8CDF8174054483DD5C9254240
BAS33 | 0101000020E6100000345EEA4A00A61A4095FAE019BDDD4140
таблица_2:
link_id | site_a | site_b | geom
---------+--------+--------+------
72 | BAS33 | MIT03 |
57 | AI4402 | MIT03 |
Вот моя функция:
CREATE OR REPLACE FUNCTION create_line() RETURNS TRIGGER
AS
$$
BEGIN
UPDATE links SET geom =ST_MakeLine((SELECT sites.geom FROM links JOIN sites ON site_code=NEW.site_a),(SELECT sites.geom FROM links JOIN sites ON site_code=NEW.site_b)) WHERE link_id=NEW.link_id;
RETURN NEW;
END;
$$
LANGUAGE plpgsql;
И триггер:
CREATE TRIGGER t_create_line
AFTER INSERT OR UPDATE OF site_a, site_b
ON links
FOR EACH ROW
EXECUTE PROCEDURE create_line();
Я не могу заставить эту функцию работать.