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

Deteksi jika baris telah diperbarui atau dimasukkan

Anda dapat melihat pada kolom sistem xmax untuk membedakannya. Ini 0 untuk baris yang disisipkan dalam kasus ini.

CREATE TABLE tbl(id int PRIMARY KEY, col int);
INSERT INTO tbl VALUES (1, 1);
INSERT INTO tbl(id, col)
VALUES (1,11), (2,22)
ON     CONFLICT (id) DO UPDATE
SET    col = EXCLUDED.col
RETURNING *, (xmax = 0) AS inserted;

Ini dibangun di atas detail implementasi tidak berdokumen yang mungkin berubah di rilis mendatang (bahkan jika tidak mungkin). Ini berfungsi untuk Postgres 9.5 dan 9.6.

Keindahannya:Anda tidak perlu menambahkan kolom tambahan.

Penjelasan detail:

  • PostgreSQL Upsert membedakan baris yang disisipkan dan diperbarui menggunakan kolom sistem XMIN, XMAX, dan lainnya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TABEL DESCRIBE PostgreSQL

  2. Postgresql :Koneksi ditolak. Periksa apakah nama host dan port sudah benar dan postmaster menerima koneksi TCP/IP

  3. pgadmin4 :server aplikasi postgresql tidak dapat dihubungi.

  4. Anda perlu menginstal postgresql-server-dev-X.Y untuk membangun ekstensi sisi server atau libpq-dev untuk membangun aplikasi sisi klien

  5. Menambah nilai di Postgres