2012-04-26 2 views
0

Два SQLite таблицы в моей Android App:SQLite Если не существует (Выбрать ...) Эквивалент

  • PoweredEquip, который содержит все приведенные в действие единиц оборудования и связанные с ними прицеп
  • прицепы, которые содержат все трейлеры в настоящее время не привязанные к блоку питания

При заполнении этих двух таблиц мне нужно только вставить в таблицу Trailers, если VIN не существует в таблице PoweredEquip. Таким образом, в T-SQL, я хотел бы сделать что-то вроде

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

Без того, чтобы сделать запись на PoweredEquip, открывая DataReader и проверки, если HasRows ложен для того, чтобы сделать Insert, я надеялся, что там было Если в SQLite эквивалент не существует (выберите ...).

+0

вы пытались увидеть, если вы можете проверьте выбранное значение resu Он равен нулю? или count == 0? – ericosg

+1

Этот вопрос SO выглядит очень похоже на ваш: http://stackoverflow.com/questions/531035/how-to-do-if-not-exists-in-sqlite – jon

+0

@Jon Я видел этот пост, но он выглядел так, что что ОП имел дело только с одной таблицей. Мне нужно проверить значение в одной таблице перед вставкой в ​​другую. – jmease

ответ

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'); 
Смежные вопросы