powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поиск отсутствующего значения ID
3 сообщений из 3, страница 1 из 1
Поиск отсутствующего значения ID
    #39463468
lera2609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте) Есть таблица тест с полями id (integer), name(text) где id первичный ключ. Нужно написать ф-я для вставки строк в таблицу, в которой будет реализовано условие поиска "пропущенных" id. Реализовала вот так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE OR REPLACE FUNCTION public.ins_test(
    name1 text)
  RETURNS void AS
$BODY$
DECLARE
ddd INTEGER;
BEGIN
SELECT (test.id+1) FROM test
WHERE (SELECT 1 FROM test AS st 
    WHERE st.id = (test.id + 1)) IS NULL
ORDER BY test.id LIMIT 1 INTO ddd;
INSERT INTO public."test"("id","name")
    VALUES (ddd, name1);
END
$BODY$
  LANGUAGE plpgsql VOLATILE



Допустим в таблице есть значения:

id=3, name='test1';
id=5, name='test2';

При вызове ф-и будут вставлены строки с id 4,6,7,8,10 и т.д., но id 1,2 добавлены не будут. Как можно исправить ф-ю что бы вставлялись первые id?
...
Рейтинг: 0 / 0
Поиск отсутствующего значения ID
    #39463485
vsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsl
Гость
lera2609,

Код: plsql
1.
2.
3.
4.
5.
insert into test (id, name) select id, name1 from (
  select id from generate_series(1,(select max(id)+1 from test)) as t(id)
  except
  select id from test
) t;



Этот запрос вставит все пропущенные значения. Хотите вставлять по одной строке — добавьте order by id limit 1
...
Рейтинг: 0 / 0
Поиск отсутствующего значения ID
    #39463725
lera2609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vsl, Огромное спасибо)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поиск отсутствующего значения ID
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]