データの存在有無を確かめてINSERTする

PostgreSQL で「対象のデータが存在しない場合のみINSERTする(既にデータが存在する場合にINSERTしない)」SQLのメモ。

BEGIN;

INSERT INTO test.t1 (id, name) 
SELECT 1, 'aaa'
WHERE NOT EXISTS (SELECT id FROM test.t1 WHERE id = 1);

COMMIT;

上記のように NOT EXISTS を使えば簡単にできるようです。

SQL は断片的な知識しかないせいでいつも簡単なことでも苦労します・・・勉強しないといけませんね。