ホームページ > データベース > mysql チュートリアル > SQLite で条件付き挿入のために SQL Server の IF NOT EXISTS をシミュレートする方法

SQLite で条件付き挿入のために SQL Server の IF NOT EXISTS をシミュレートする方法

Susan Sarandon
リリース: 2024-12-15 18:26:11
オリジナル
617 人が閲覧しました

How to Simulate SQL Server's IF NOT EXISTS in SQLite for Conditional Inserts?

レコードが存在しない場合の SQLite への挿入: IF NOT EXISTS の探索

MS SQL Server では、IF NOT EXISTS 句は次のとおりです。条件付きでテーブルにレコードを挿入するために使用されます。たとえば、次のコード スニペットは、EVENTTYPE テーブルに新しいレコードが存在しない場合にそのレコードを作成します:

IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received') 
    INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
ログイン後にコピー

ただし、SQLite は IF NOT EXISTS 句をネイティブにサポートしません。その結果、この機能を SQLite に移植しようとする開発者は、課題に直面する可能性があります。

SQLite の条件付き挿入の回避策

IF NOT EXISTS の直接サポートがないにもかかわらず、 SQLite で利用できるいくつかの回避策があります。一般的なアプローチの 1 つは、INSERT OR IGNORE ステートメントを使用することです。

INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received'
ログイン後にコピー

このステートメントは、EVENTTYPE テーブルにレコードを挿入しようとしますが、レコードがすでに存在する場合でもエラーは発生しません。

または、次に示すように、SELECT ステートメントと INSERT ステートメントを組み合わせて使用​​することもできます。以下:

INSERT INTO EVENTTYPE (EventTypeName)
SELECT 'ANI Received'
WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received');
ログイン後にコピー

このコードは、まず SELECT ステートメントを使用してレコードが既に存在するかどうかを確認します。存在しない場合は、INSERT ステートメントが実行されて新しいレコードが追加されます。

以上がSQLite で条件付き挿入のために SQL Server の IF NOT EXISTS をシミュレートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート