PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres 9.5 PADA KONFLIK LAKUKAN PILIH

Anda dapat menggunakan 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

Demo DBFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dengan wadah buruh pelabuhan postgresql dan pgadmin

  2. Bagaimana Atan2() Bekerja di PostgreSQL

  3. Kondisi berhenti CTE rekursif untuk loop

  4. Cara menanyakan metadata indeks di PostgreSQL

  5. Bagaimana cara membuat kolom auto incrementing/SERIAL id di DBeaver menggunakan PostgreSQL?