この行をMS SQL ServerからSQLiteに移植しようとしています
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
SQLiteはIF NOT EXISTSをサポートしていないか、少なくとも機能しません。シンプルなものが欠けていますか?回避策はありますか?
これはどう?
INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received'
(私はSQLiteを持っていないのでテストされていません...しかし このリンク は非常に記述的です。)
さらに、これも動作するはずです:
INSERT INTO EVENTTYPE (EventTypeName)
SELECT 'ANI Received'
WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received');
既存の値の挿入を無視する場合は、テーブルにキーフィールドが必要です。次のような主キーフィールドを持つテーブルを作成します。
CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));
次に、テーブルのクエリを挿入または置換/挿入または無視します:
INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');
既存のプライマリキー値を再入力させません...これは、テーブルに値が存在するかどうかを確認する方法です。
また、KEYフィールドを使用してテーブルに制約を設定し、競合時の「無視」を設定することもできます。
適用可能な制約違反が発生すると、IGNORE解決アルゴリズムは制約違反を含む1つの行をスキップし、何も問題がなかったかのようにSQLステートメントの後続の行の処理を続行します。制約違反を含む行の前後の他の行は、通常どおり挿入または更新されます。 IGNORE競合解決アルゴリズムが使用されている場合、エラーは返されません。