2016-10-20 10 views
0

SQLiteデータベースを使用しています。SQLiteのCASE文 - INSERTが存在しない場合

id Valueが存在しないが、IF()関数のサポートがない場合、id valueまたはurl Valueを挿入したいのですが、どのようにSQL CASE文を記述する必要がありますか?

require 'sqlite3' 
$db.execute(" 
IF NOT EXISTS(select * from table WHERE id='123456') 
BEGIN 
INSERT INTO sap(id,url) VALUES('123456', 'https:/test.com'); 
END;") 

すべてのヘルプは、

おかげでいただければ幸いです!

+1

http://stackoverflow.com/questions/418898/sqlite-upsert-not-insert-or-replace –

答えて

1

一つの方法は、単一の文としてこれを書くことです:

INSERT INTO sap(id, url) 
    SELECT id, url 
    FROM (SELECT '123456' as id, 'https:/test.com' as url) t 
    WHERE NOT EXISTS (SELECT 1 FROM sap WHERE sap.id = t.id); 

しかし、正しい答えは、データベースが内部的にチェックしないように、一意のインデックス/制約を使用することです:

CREATE UNIQUE INDEX unq_sap_id ON sap(id); 

idに重複値を挿入しようとすると、INSERTは失敗します。

+0

ありがとうございます。インデックスを作成する必要があります。 @Berlin。 – Berlin

+0

。 。はい。作成したデータベースはそれを維持します。 –

+0

あなたの助けをもう一度ありがとう! – Berlin