sql >> データベース >  >> RDS >> PostgreSQL

特定の行名が存在しない場合はPOSTGRESQLINSERT?

    ON DUPLICATE KEY UPDATE PostgreSQLではなくMySQL構文です。 PostgreSQLには、必要なことを実行するための単純なSQL構文がありません。

    ただし、ドキュメント それを行う関数のサンプルコードが含まれています。

    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. 画像をデータベースに直接保存しますか、それともbase64データとして保存しますか?

    2. 結合と結合を使用したSQLクエリ

    3. PHP/MySQLを使用したCSVアップロード

    4. 値を前の行の値と比較するMySQLクエリ