Я понял это.
Мне нужно было написать функцию-оболочку для моего оператора INSERT.
В базе данных обычно будет по одному пользователю за раз, поэтому условие «переход к следующему идентификатору» встречается редко. Что меня беспокоило, так это то, что моя (не упомянутая) функция «извлекать строки из таблицы удаленной базы данных» попыталась повторно вставить растущую таблицу удаленной базы данных в основную таблицу базы данных. Я отображаю идентификаторы строк, и я не хотел, чтобы пользователи рассматривали разрыв в нумерации как отсутствующие данные.
В любом случае, вот мое решение:
CREATE FUNCTION testInsert (test.info%TYPE) RETURNS void AS '
BEGIN
PERFORM info FROM test WHERE info=$1;
IF NOT FOUND THEN
INSERT INTO test (info) VALUES ($1);
END IF;
END;' LANGUAGE plpgsql;