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

POSTGRESQL INSERT jika nama baris tertentu tidak ada?

ON DUPLICATE KEY UPDATE adalah sintaks MySQL, bukan PostgreSQL. PostgreSQL tidak memiliki sintaks SQL sederhana untuk melakukan apa yang Anda inginkan.

Namun dokumentasi menyertakan kode contoh untuk fungsi yang melakukan itu.

CREATE TABLE db (a INT PRIMARY KEY, b TEXT);

CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
$$
BEGIN
    LOOP
        -- first try to update the key
        UPDATE db SET b = data WHERE a = key;
        IF found THEN
            RETURN;
        END IF;
        -- not there, so try to insert the key
        -- if someone else inserts the same key concurrently,
        -- we could get a unique-key failure
        BEGIN
            INSERT INTO db(a,b) VALUES (key, data);
            RETURN;
        EXCEPTION WHEN unique_violation THEN
            -- do nothing, and loop to try the UPDATE again
        END;
    END LOOP;
END;
$$
LANGUAGE plpgsql;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memanggil prosedur tersimpan dan mendapatkan nilai pengembalian di Slick (menggunakan Scala)

  2. Postgresql:Tidak dapat mengakses file « $libdir/postgis-2.1 » tidak ada file atau direktori seperti itu

  3. Fungsi SQL sangat lambat dibandingkan dengan kueri tanpa pembungkus fungsi

  4. Bagaimana saya bisa melakukan kurang dari, lebih besar dari di bidang JSON Postgres?

  5. Menjalankan skrip sql dengan saling ketergantungan