Кажется, это ORACLEism, который не нужен в Postgres. Предполагая, что ваша таблица уже существует, просто
alter table *table_name* alter column site_num default nextval('gismgr.SITENUM_SEQ')
Также убедитесь, что вставка не упоминает столбец site_num. Если вы чувствуете, что должны продолжить использование триггера, ваша функция триггера должна указать возвращаемое значение.
CREATE OR REPLACE FUNCTION process_sites_edit()
RETURNS TRIGGER AS $SITE_EDIT_TRIGGER$
begin
new.SITE_NUM := nextval('gismgr.SITENUM_SEQ');
return new;
end;
$SITE_EDIT_TRIGGER$ LANGUAGE 'plpgsql';
Я также хотел бы предложить вам не запускать триггер при обновлении. Это изменит номер сайта при любом / каждом обновлении данной строки. Если FK ссылается на него - они не будут обновлены, обновление завершится неудачно. Далее выполняемая процедура должна соответствовать имени функции:
create TRIGGER SITE_EDIT_TRIGGER
before insert on STRATEGY_SITES for each row
EXECUTE PROCEDURE process_sites_edit();