0

私のAndroidアプリの2つのSQLiteテーブル:

  • すべての動力機器ユニットとそれに関連するトレーラーを含むPoweredEquip
  • 現在パワードユニットに接続されていないすべてのトレーラーを含むトレーラー

これらの2つのテーブルにデータを入力するとき、VINがPoweredEquipテーブルに存在しない場合にのみ、Trailersテーブルに挿入する必要があります。したがって、T-SQLでは、次のようなことを行います。

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

PoweredEquipでSelectを実行したり、DataReaderを開いたり、Insertを実行するためにHasRowsがFalseであるかどうかを確認したりすることなく、SQLiteに同等のIf Not Exists(Select ...)があることを期待していました。

4

1 に答える 1

1

これに直接相当するものは SQLite にはありません。INSTEAD OF INSERT挿入は条件をサポートしていません (INSERT INTO TABLE SELECT ..' を介して行う場合を除きます) CASEAFTER 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 に答える