SQLite如果不存在(选择...)等效

时间:2012-04-26 13:40:55

标签: android sqlite

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

  • PoweredEquip包含所有动力设备单元及其相关拖车
  • 包含目前未与动力装置相连的所有拖车的拖车

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

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

无需在PoweredEquip上执行选择,打开DataReader并检查HasRows是否为False以进行插入,我希望SQLite中存在If Not Exists(Select ...)等效项。

1 个答案:

答案 0 :(得分:1)

在SQLite中没有直接的等价物。插入不支持任何条件(除非你通过INSERT INTO TABLE SELECT ...'来实现。可能有一些类似于INSTEAD OF INSERT触发器的东西,它可以插入或不插入{{1}或者使用CASE触发器删除不属于表的行。

未经测试的:

AFTER INSERT

编辑其他答案中提到的方式也应该有效:

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