我正在使用SQLite数据库。
如果id value
不存在,我想插入url Value
或id 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;")
任何帮助将不胜感激,
谢谢!
答案 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
将失败。