Simulation von MySQLs ON DUPLICATE KEY UPDATE in SQLite
SQLite fehlt ein direktes Äquivalent der ON DUPLICATE KEY UPDATE-Klausel von MySQL, die effiziente Aktualisierungen und Einfügungen von Datensätzen mit vordefinierten eindeutigen Einschränkungen ermöglicht. Ein ähnlicher Effekt kann jedoch auch durch alternative Methoden erzielt werden.
Alternative Methoden
Um einen Upsert in SQLite zu simulieren, gibt es zwei Hauptmethoden, die Sie verwenden können:
SELECT (INSERT oder UPDATE):
UPDATE (INSERT, wenn UPDATE fehlschlägt):
Empfohlene Methode
Beide Methoden haben ihre Vor- und Nachteile, aber die zweite Methode (mit UPDATE (oder INSERT, wenn UPDATE fehlschlägt)) ist im Allgemeinen effizienter. Es erfordert nur einen einzigen Datenbankvorgang und vermeidet unnötige SELECT-Abfragen.
Vorgeschlagene Codeausschnitte
Hier ist ein vorgeschlagener Codeausschnitt zur Implementierung des zweiten Ansatzes unter Verwendung einer eindeutigen Einschränkung für die Spalte „ip“:
<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0); UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;</code>
Alternativ bietet der folgende Codeausschnitt einer anderen Stack Overflow-Lösung eine weitere funktionierende Upsert-Implementierung:
<code class="language-sql">INSERT INTO visits (ip, hits) VALUES ($ip, COALESCE((SELECT hits FROM visits WHERE ip LIKE $ip), 0) + 1);</code>
Das obige ist der detaillierte Inhalt vonWie kann ich MySQLs ON DUPLICATE KEY UPDATE in SQLite effizient emulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!