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

oracle sql:存在する場合は更新、そうでない場合は挿入

    MERGEには「複数のテーブル」は必要ありませんが、ソースとしてクエリが必要です。このようなものが機能するはずです:

    MERGE INTO mytable d
    USING (SELECT 1 id, 'x' name from dual) s
    ON (d.id = s.id)
    WHEN MATCHED THEN UPDATE SET d.name = s.name
    WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);
    

    または、PL/SQLでこれを行うこともできます。

    BEGIN
      INSERT INTO mytable (id, name) VALUES (1, 'x');
    EXCEPTION
      WHEN DUP_VAL_ON_INDEX THEN
        UPDATE mytable
        SET    name = 'x'
        WHERE id = 1;
    END;
    


    1. PostgreSQLでクロス集計用の列を動的に生成する

    2. MariaDBEnterpriseBackupとClusterControlBackupManagementの比較

    3. SQLServer2014のStandardEditionのお客様にとってのすばらしいニュース

    4. 既存のスキーマからテーブル関係図を生成する(SQL Server)