Postgres 9.5 ON CONFLICT DO SELECT

ジムスキー

Postgres 9.5でUPSERTを実行しているときに、INSERTが成功したときにnullを返し、CONFLICTで何かを返すことは可能ですか?

私はこのようなことをしたいと思います:

insert into "user" (timestamp, user_id, member_id) 
values ($1, $2, $3)
ON CONFLICT (user_id, member_id) 
DO select id from "user" where user_id = $2 returning user_id

user_idを選択する唯一の目的は、ディスクに書き込むことなく、CONFLICTで何か(null以外のもの)を返すことです。これはONCONFLICT DO UPDATEで実行できることは知っていますが、ディスクへの書き込みが必要になります。

Lukasz Szozda

CTEを使用できます。

WITH cte AS (
   INSERT INTO "user"(timestamp, user_id, member_id)
   values ($1, $2, $3)
   ON CONFLICT (user_id, member_id) DO NOTHING
   RETURNING user_id
)
SELECT NULL AS result
WHERE EXISTS (SELECT 1 FROM cte)          -- success
UNION ALL
SELECT id 
FROM "user" 
WHERE user_id = $2 
  AND NOT EXISTS (SELECT 1 FROM cte);     -- conflict

DBFiddleデモ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Postgres INSERT ON CONFLICT DO NOTHING vs SELECT + INSERT query

分類Dev

Postgres INSERT ON CONFLICT DO NOTHING vs SELECT + INSERTクエリ

分類Dev

Postgres INSERT ON CONFLICT DO UPDATE vsINSERTまたはUPDATE

分類Dev

Postgres INSERT ON CONFLICT with JSONB

分類Dev

nodejs & postgres : best way to do select for update

分類Dev

Conflict FOREACH MySql SELECT PDO

分類Dev

Select nth child select 1, 2, 5, 6, 9, 10 etc

分類Dev

select into with a constraint id postgres

分類Dev

Postgres Set Select Value In If

分類Dev

Possible to upsert in Postgres on conflict on exactly one of 2 columns?

分類Dev

ProgrammingError-sqlalchemy-on_conflict_do_update

分類Dev

Inserting into array on SELECT at index in Postgres

分類Dev

Postgres SELECT COUNT ...更新用

分類Dev

DataTable select method with single quote conflict C#

分類Dev

Counting number of UIViews that have been randomly tapped from a number of UIViews, ie: random 5 UIViews tapped from 9 UIViews, then do action

分類Dev

Time() By 5 Minutes Select

分類Dev

How do I reference a unique index that uses a function in ON CONFLICT?

分類Dev

ON CONFLICT DO NOTHING for UPDATEpostgresに相当します

分類Dev

How do I fix a Bundler Conflict when pushing to Heroku?

分類Dev

Postgres table select query is too slow

分類Dev

Postgres upsert using results from select

分類Dev

select alternate field name group by postgres

分類Dev

select alternate field name group by postgres

分類Dev

postgres SELECT query returns unusable result

分類Dev

How to select rows by year interval with postgres sql?

分類Dev

SQL:SELECT date BETWEEN error(postgres)

分類Dev

Postgres SELECT DISTINCT、最高値のみ

分類Dev

How to select the reserved word (limit) in postgres

分類Dev

Round last digit to 0 , 5 or 9 in PHP

Related 関連記事

  1. 1

    Postgres INSERT ON CONFLICT DO NOTHING vs SELECT + INSERT query

  2. 2

    Postgres INSERT ON CONFLICT DO NOTHING vs SELECT + INSERTクエリ

  3. 3

    Postgres INSERT ON CONFLICT DO UPDATE vsINSERTまたはUPDATE

  4. 4

    Postgres INSERT ON CONFLICT with JSONB

  5. 5

    nodejs & postgres : best way to do select for update

  6. 6

    Conflict FOREACH MySql SELECT PDO

  7. 7

    Select nth child select 1, 2, 5, 6, 9, 10 etc

  8. 8

    select into with a constraint id postgres

  9. 9

    Postgres Set Select Value In If

  10. 10

    Possible to upsert in Postgres on conflict on exactly one of 2 columns?

  11. 11

    ProgrammingError-sqlalchemy-on_conflict_do_update

  12. 12

    Inserting into array on SELECT at index in Postgres

  13. 13

    Postgres SELECT COUNT ...更新用

  14. 14

    DataTable select method with single quote conflict C#

  15. 15

    Counting number of UIViews that have been randomly tapped from a number of UIViews, ie: random 5 UIViews tapped from 9 UIViews, then do action

  16. 16

    Time() By 5 Minutes Select

  17. 17

    How do I reference a unique index that uses a function in ON CONFLICT?

  18. 18

    ON CONFLICT DO NOTHING for UPDATEpostgresに相当します

  19. 19

    How do I fix a Bundler Conflict when pushing to Heroku?

  20. 20

    Postgres table select query is too slow

  21. 21

    Postgres upsert using results from select

  22. 22

    select alternate field name group by postgres

  23. 23

    select alternate field name group by postgres

  24. 24

    postgres SELECT query returns unusable result

  25. 25

    How to select rows by year interval with postgres sql?

  26. 26

    SQL:SELECT date BETWEEN error(postgres)

  27. 27

    Postgres SELECT DISTINCT、最高値のみ

  28. 28

    How to select the reserved word (limit) in postgres

  29. 29

    Round last digit to 0 , 5 or 9 in PHP

ホットタグ

アーカイブ