powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите чайнику достать вставленный uuid
5 сообщений из 5, страница 1 из 1
Помогите чайнику достать вставленный uuid
    #39353817
balykovdron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть табличка
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE public.city
(
    recid uuid NOT NULL DEFAULT uuid_generate_v4(),
    recname character varying(255) COLLATE pg_catalog."default" NOT NULL,
    reccreated timestamp without time zone NOT NULL,
    recupdated timestamp without time zone NOT NULL,
    CONSTRAINT pk_city PRIMARY KEY (recid)
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.city
    OWNER to postgres;



И есть еще несколько таблиц (не важно)

Я хочу написать скрипт, который бы заполнил эту таблицу - но при этом вставленные ID (recid) мне нужны для вставки в другие таблицы...

Вот я пытаюсь написать скрипт:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
do $$
declare ts timestamp;
declare id uuid;
begin
	ts = localtimestamp;
	INSERT INTO public.city(recname, reccreated, recupdated) VALUES ('Белгород', ts, ts);
	
    -- как мне тут достать вставленный recid и сохранить его например куда-то в переменную чтоли, чтобы потом вставить в другую таблицу.
end $$;



P.S. Я чайник - только начал в Postgre. Знаю хорошо MS SQL. Чувствую тут какой-то другой подход что ли нужен...
...
Рейтинг: 0 / 0
Помогите чайнику достать вставленный uuid
    #39353821
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
balykovdron,

Код: sql
1.
INSERT INTO public.city(recname, reccreated, recupdated) VALUES ('Белгород', ts, ts) RETURNING recid;



Можно завернуть в один CTE всю запись и обработку и не дёргать по одному insert'у.
Код: sql
1.
2.
3.
4.
with writea as (
    insert into tablename /**/ returning id
)
insert into tablename2 (tablename_a_id, somedata) select id, 'some constant or case or any expression' from writea
...
Рейтинг: 0 / 0
Помогите чайнику достать вставленный uuid
    #39353951
balykovdron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Уже не работает:


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
do $$
declare ts timestamp;
begin
	ts = localtimestamp;
    
    with newcity as (
		INSERT INTO public.city(recname, reccreated, recupdated) VALUES ('Белгород', ts, ts) RETURNING recid;
	)
    
    --select * from newcity;
end $$;
...
Рейтинг: 0 / 0
Помогите чайнику достать вставленный uuid
    #39353966
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
balykovdron,

во-первых, "не работает" - не описание.
во-вторых, сразу две синтаксические ошибки. Точка с запятой может быть только в конце всего CTE и вторая ошибка - CTE у вас не закончен.
...
Рейтинг: 0 / 0
Помогите чайнику достать вставленный uuid
    #39354611
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идентификаторы на основе UUID тем и хороши, что их можно свободно генерить на клиенте, не напрягая сервер.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите чайнику достать вставленный uuid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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