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

Gunakan INSERT ... ON CONFLICT JANGAN MENGEMBALIKAN baris yang gagal

Agak bertele-tele, tapi saya tidak bisa memikirkan hal lain:

with all_tags (name) as (
  values ('tag10'), ('tag6'), ('tag11')
), inserted (id, name) as (
   INSERT INTO tags (name)
   select name 
   from all_tags
   ON CONFLICT DO NOTHING 
   returning id, name
)
select t.id, t.name, 'already there'
from tags t
  join all_tags at on at.name = t.name
union all
select id, name, 'inserted'
from inserted;

Pilihan luar dari tags melihat cuplikan tabel seperti sebelumnya tag baru dimasukkan. Kolom ketiga dengan konstanta hanya ada untuk menguji kueri sehingga seseorang dapat mengidentifikasi baris mana yang dimasukkan dan mana yang tidak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hasilkan rangkaian tanggal - gunakan tipe tanggal sebagai input

  2. Fungsi SALIN di PostgreSQL

  3. Buat Alias ​​​​Secara Massal?

  4. Rel 3.1. Heroku PGError:operator tidak ada:karakter bervariasi =integer

  5. Alih-alih LIKE dan ~, mengapa hanya SIMILAR TO yang berfungsi saat melakukan pencocokan regex dengan alternatif