0

我的 Android 应用程序中的两个 SQLite 表:

  • PoweredEquip,其中包含所有动力设备单元及其相关拖车
  • 包含当前未绑定到动力单元的所有拖车的拖车

填充这两个表时,如果 PoweredEquip 表中不存在 VIN,我只需要插入 Trailers 表。所以在 T-SQL 中,我会做类似的事情

If Not Exists (Select VIN From PoweredEquip Where VIN = _VIN)
    Insert Into Trailers Values (.....)

无需在 PoweredEquip 上进行 Select,打开 DataReader 并检查 HasRows 是否为 False 即可进行插入,我希望 SQLite 中有一个 If Not Exists (Select...) 等效项。

4

1 回答 1

1

SQLite 中没有直接的等价物。插入不支持任何条件(除非您通过 INSERT INTO TABLE SELECT..' 执行此操作。可以使用INSTEAD OF INSERT执行插入或不基于 的触发器构建类似的东西CASE。或者使用AFTER INSERT删除行的触发器不属于表。

未经测试:

CREATE TRIGGER remove_bad AFTER INSERT ON Trailers BEGIN
    DELETE FROM Trailers WHERE NEW._VIN IN (SELECT VIN FROM PoweredEquip);
END;

编辑另一个答案中提到的方式也应该有效:

INSERT INTO Trailers(columns, ..) SELECT 'values',.. WHERE NOT EXISTS 
    (SELECT 1 FROM PoweredEquip WHERE VIN = '_VIN-value');
于 2012-04-26T13:54:54.313 回答