PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

कैसे पता करें कि पोस्टग्रेएसक्यूएल 9.5+ यूपीएसईआरटी के साथ एक अप्सर्ट अपडेट था या नहीं?

मेरा मानना ​​है कि xmax::text::int > 0 सबसे आसान तरकीब होगी:

so=# DROP TABLE IF EXISTS tab;
NOTICE:  table "tab" does not exist, skipping
DROP TABLE
so=# CREATE TABLE tab(id INT PRIMARY KEY, col text);
CREATE TABLE
so=# INSERT INTO tab(id, col) VALUES (1,'a'), (2, 'b');
INSERT 0 2
so=# INSERT INTO tab(id, col)
VALUES (3, 'c'), (4, 'd'), (1,'aaaa')
ON CONFLICT (id) DO UPDATE SET col = EXCLUDED.col
returning *,case when xmax::text::int > 0 then 'updated' else 'inserted' end,ctid;
 id | col  |   case   | ctid
----+------+----------+-------
  3 | c    | inserted | (0,3)
  4 | d    | inserted | (0,4)
  1 | aaaa | updated  | (0,5)
(3 rows)

INSERT 0 3
so=# INSERT INTO tab(id, col)
VALUES (3, 'c'), (4, 'd'), (1,'aaaa')
ON CONFLICT (id) DO UPDATE SET col = EXCLUDED.col
returning *,case when xmax::text::int > 0 then 'updated' else 'inserted' end,ctid;
 id | col  |  case   | ctid
----+------+---------+-------
  3 | c    | updated | (0,6)
  4 | d    | updated | (0,7)
  1 | aaaa | updated | (0,8)
(3 rows)

INSERT 0 3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक बड़े Django QuerySet के माध्यम से बड़ी मात्रा में स्मृति का उपभोग क्यों कर रहा है?

  2. PostgreSQL:क्वेरी का परिणाम डेटा के लिए कोई गंतव्य नहीं है

  3. पीएल/पीजीएसक्यूएल फ़ंक्शन से अज्ञात कॉलम के साथ गतिशील तालिका लौटाएं

  4. समय क्षेत्र के बिना स्ट्रिंग को टाइमस्टैम्प में कैसे बदलें

  5. PostgreSQL कमिटफेस्ट का प्रबंधन