sql >> Database >  >> RDS >> PostgreSQL

POSTGRESQL INSERT als een specifieke rijnaam niet bestaat?

ON DUPLICATE KEY UPDATE is MySQL-syntaxis, niet PostgreSQL. PostgreSQL heeft geen eenvoudige SQL-syntaxis om te doen wat je wilt.

Maar de documentatie bevat voorbeeldcode voor een functie die dat doet.

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. is het mogelijk om op afstand toegang te krijgen tot de mysql-database op gedeelde hostings?

  2. hoe nummer te geven aan voorkomen in sql

  3. Andere waarde in de database opslaan dan de formulieren die dynamisch zijn gemaakt met PHP?

  4. SQL-query meerdere tabellen, met meerdere joins en kolomveld met door komma's gescheiden lijst