レコードが存在していなかったら、INSERTするには
* 条件に「NOT EXISTS」を利用する
=> WHERE NOT EXISTS (SELECT * FROM 【テーブル名】 WHERE 【主キー名】='【主キー値】');
サンプル
使用するテーブル
CREATE TABLE person
(
id character(8) NOT NULL,
name character varying(100),
sex character(1),
updatedate timestamp without time zone,
CONSTRAINT person_pkey PRIMARY KEY (id)
)
何もない状態で以下を二回実行してみる
INSERT INTO person(
id, name, sex, updatedate)
SELECT 'X0000001', 'Ocean', 'm', now()
WHERE NOT EXISTS (SELECT * FROM person WHERE id='X0000001');
使用するテーブル
CREATE TABLE person
(
id character(8) NOT NULL,
name character varying(100),
sex character(1),
updatedate timestamp without time zone,
CONSTRAINT person_pkey PRIMARY KEY (id)
)
何もない状態で以下を二回実行してみる
INSERT INTO person(
first_name, family_name)
SELECT 'Mike', 'Dean' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM person WHERE id=1);
補足:DUALについて
* MySQL5.7 だとなくても問題ないのだが、AuroraだとSQL文法エラーになるのでつけている
(詳細は以下の関連記事を参照のこと。)
http://blogs.yahoo.co.jp/dk521123/36695968.html