PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

CHÈN POSTGRESQL nếu tên hàng cụ thể không tồn tại?

ON DUPLICATE KEY UPDATE là cú pháp MySQL, không phải PostgreSQL. PostgreSQL không có cú pháp SQL đơn giản để làm những gì bạn muốn.

Nhưng tài liệu bao gồm mã ví dụ cho một chức năng thực hiện điều đó.

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. Làm sắc nét dữ liệu của bạn với PostgreSQL 11

  2. SELECT DISTINCT chậm hơn mong đợi trên bảng của tôi trong PostgreSQL

  3. Làm thế nào để tách chuỗi và chèn nó như một dòng mới trong cùng một bảng?

  4. Hợp nhất các bảng với PostgreSQL

  5. Postgresql Nhiều số lượng cho một bảng