Разобрался сам:
Оказалось проще простого:
SELECT max(x)+1 INTO n
SELECT xx INTO res FROM generate_series(2,n) xx
WHERE xx NOT IN (SELECT x FROM tbl) LIMIT 1
From: Владимир Комаров [mailto:vlads@sibnet.ru]
Sent: Thursday, August 27, 2015 11:17 PM
To: 'Alexey Vasiliev' <leopard_ne@inbox.ru>
Subject: RE: [pgsql-ru-general] Вопрос по нумерации
Спасибо, но этот вариант я знаю:
Сделать строку str:=1,2,3,4…n
Где SELECT max(x)+1 INTO n
А ПОТОМ нечто подобное:
SELECT xx INTO res from (SELECT regexp_split_to_table(str) xx) WHERE xx NOT IN (SELECT x FROM tbl) LIMIT 1
Но хотелось более элегантный способ формирования таблицы str или (regexp_split_to_table(str))
На алгоритмах есть такое:
http://algolist.manual.ru/olimp/poi_sol.php#a10
Thursday, 27 August 2015, 06:26PM +03:00 from Владимир Комаров <vlads@sibnet.ru>:
Есть таблица. Есть столбец Х .
Необходимо внести строку так, чтобы номер, попадаемый в Х был минимальным уникальным.
Например, есть строки: 1,2,3,4,6,7,9
Значит новая строка должна быть с номером 5
Как это сделать максимально быстро?