SQLite CASE语句 - INSERT IF NOT EXISTS

时间:2016-10-20 14:18:36

标签: sql sqlite

我正在使用SQLite数据库。

如果id value不存在,我想插入url Valueid Value,但是不支持IF()函数,我应该如何用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 个答案:

答案 0 :(得分: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将失败。