SQLite CASE语句-如果不存在,则插入

SQLite CASE语句-如果不存在,则插入,sql,sqlite,Sql,Sqlite,我正在使用SQLite数据库 我想插入id值或url值如果id值不存在,但不支持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;") 任何帮助都将不胜感激 谢谢 一种方法是将其作

我正在使用SQLite数据库

我想插入
id值
url值
如果
id值
不存在,但不支持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;")
任何帮助都将不胜感激


谢谢

一种方法是将其作为单个语句编写:

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
插入重复值,则
插入将失败。

另请参见谢谢,所以我只需要创建一次索引,对吗?@Berlin。对创建后,数据库将对其进行维护。再次感谢您的帮助!