ホームページ >データベース >mysql チュートリアル >SQLite で MySQL の ON DUPLICATE KEY UPDATE を効率的にエミュレートする方法は?
SQLite での MySQL の ON DUPLICATE KEY UPDATE のシミュレーション
SQLite には、MySQL の ON DUPLICATE KEY UPDATE 句に直接相当する機能がありません。これにより、事前定義された一意の制約を使用してレコードの効率的な更新と挿入が可能になります。ただし、別の方法でも同様の効果を達成できます。
代替方法
SQLite で更新/挿入をシミュレートするには、使用できる主な方法が 2 つあります。
選択 (挿入または更新):
UPDATE (UPDATE が失敗した場合は INSERT):
おすすめの方法
どちらの方法にも長所と短所がありますが、一般的には 2 番目の方法 (UPDATE (UPDATE が失敗した場合は INSERT) を使用) の方が効率的です。必要なデータベース操作は 1 つだけであり、不必要な SELECT クエリを回避できます。
推奨されるコード スニペット
「ip」列の一意制約を使用して 2 番目のアプローチを実装するための推奨コード スニペットを次に示します。
<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0); UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;</code>
別の Stack Overflow ソリューションの次のコード スニペットは、別の動作する upsert 実装を提供します。
<code class="language-sql">INSERT INTO visits (ip, hits) VALUES ($ip, COALESCE((SELECT hits FROM visits WHERE ip LIKE $ip), 0) + 1);</code>
以上がSQLite で MySQL の ON DUPLICATE KEY UPDATE を効率的にエミュレートする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。