ホームページ > データベース > mysql チュートリアル > SQLite で MySQL の ON DUPLICATE KEY UPDATE 機能を実現するにはどうすればよいですか?

SQLite で MySQL の ON DUPLICATE KEY UPDATE 機能を実現するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-15 14:11:44
オリジナル
991 人が閲覧しました

How Can I Achieve MySQL's ON DUPLICATE KEY UPDATE Functionality in SQLite?

SQLite Upsert: MySQL の ON DUPLICATE KEY UPDATE 機能のミラーリング

MySQL の ON DUPLICATE KEY UPDATE は、一意のキー制約に基づいて行の挿入または更新を簡素化します。 この 1 つのクエリは、キーが一意であれば新しい行を挿入し、重複キーが見つかった場合には既存の行を更新します。 SQLite には、これに直接相当するものがありません。

SQLite での Upsert の回避策

SQLite は、同じ結果を達成するための代替戦略を提供します。

1. SELECT してから INSERT または UPDATE:

このメソッドは 2 つのクエリを使用します:

  • 指定されたキーを持つ行の存在を確認するための SELECT クエリ。
  • INSERT クエリの結果に応じて、UPDATE または SELECT クエリ。

このアプローチには 2 つのデータベース対話が必要であり、パフォーマンスに影響を与える可能性があります。

2. 更新し、失敗した場合は挿入します:

これには、エラー処理を伴う単一の UPDATE クエリが含まれます:

  • 成功した UPDATE は既存の行を示し、データが更新されます。
  • 失敗した UPDATE (行が存在しないため) は、INSERT クエリをトリガーします。

これによりデータベース呼び出しが 1 つに減りますが、失敗した INSERT 試行 (キーの重複などによる) に対する追加のエラー処理が必要になります。

最適な SQLite Upsert 戦略

最も効率的で堅牢な SQLite の更新/挿入メソッドは、INSERT OR IGNOREUPDATE を組み合わせたものです。

<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;</code>
ログイン後にコピー

これには、「ip」列に UNIQUE または PRIMARY KEY 制約が必要です。 INSERT OR IGNORE は挿入を試みます。重複キーが存在する場合、それは黙って無視されます。 後続の UPDATE は、既存の行のヒット カウンターをインクリメントします。 このソリューションは、効率 (単一のデータベースラウンドトリップ) と重複キー挿入によるエラーの回避の両方を提供します。

以上がSQLite で MySQL の ON DUPLICATE KEY UPDATE 機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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