From: | Nikolay Samokhvalov <samokhvalov(at)gmail(dot)com> |
---|---|
To: | Владимир <vlads(at)sibnet(dot)ru> |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: select + insert |
Date: | 2017-12-01 15:49:12 |
Message-ID: | CANNMO+Jbfj_sSvywWiYcuPQ5U2DJ2JuEQamUB3kaNdishKo68w@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
create table a(id int8 primary key);
with ids(id) as (
values(1)
), ins as (
insert into a(id)
select id from ids
on conflict (id) do nothing
returning *
)
select * from a where id in (select id from ids)
union all
select * from ins
;
2017-12-01 4:44 GMT-08:00 Владимир <vlads(at)sibnet(dot)ru>:
> Добрый день!
> Хотелось узнать вот такой вопрос.
> Создал функцию на plsql - create(xx)
> Которая вот что делает:
> Если xx есть в таблице tbl тогда возвращает 0 иначе создает строку xx в
> таблице tbl и возвращает x
>
> Так вот, а есть ли возможность тоже самое сделать, но на sql языке
> хотел что-то на подобии:
>
> SELECT 0 from tbl WHERE x=xx
> UNION ALL
> INSERT INTO tbl values (xx) WHERE xx NOT IN (SELECT x from tbl) RETURNING x
>
> Но не проходит.
> Может подскажете, очень интересно знать, возможно ли подобное.
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2017-12-02 08:37:04 | Re: SPAM (5.7) [pgsql-ru-general] Re: [pgsql-ru-general] Запарил сверхинтеллект |
Previous Message | Nikolay Samokhvalov | 2017-12-01 15:42:29 | Re: [pgsql-ru-general] Запарил сверхинтеллект |