Simulieren von MySQL INSERT ON DUPLICATE KEY UPDATE in SQLite: Vollständige Anleitung
Relationale Datenbanken müssen häufig einen Datensatz aktualisieren, wenn er bereits vorhanden ist, oder einen neuen Datensatz einfügen, wenn er nicht vorhanden ist. In MySQL kann diese Funktionalität mithilfe der Syntax INSERT ... ON DUPLICATE KEY UPDATE erreicht werden, die eine bequeme Möglichkeit bietet, Einfüge- und Aktualisierungsvorgänge zu kombinieren.
SQLite unterstützt diese Syntax jedoch nicht nativ. Daher müssen alternative Wege untersucht werden, um den gleichen Effekt in SQLite zu erzielen.
Eine Möglichkeit besteht darin, eine SELECT-Anweisung in Kombination mit einer INSERT- oder UPDATE-Abfrage zu verwenden. Dazu muss zunächst eine SELECT-Abfrage ausgeführt werden, um zu prüfen, ob ein Datensatz mit demselben eindeutigen Schlüssel (z. B. IP-Adresse) vorhanden ist. Falls vorhanden, führen Sie eine UPDATE-Abfrage durch, um die Trefferspalte zu erhöhen. Wenn er nicht vorhanden ist, wird eine INSERT-Abfrage ausgeführt, um einen neuen Datensatz zu erstellen.
Alternativ können Sie UPDATE- und INSERT-Abfragen kombinieren. Hier wird zunächst eine UPDATE-Abfrage ausgeführt, die versucht, die Trefferspalte für eine bestimmte IP-Adresse zu erhöhen. Bei Erfolg ist der Datensatz vorhanden und der Vorgang ist abgeschlossen. Wenn das UPDATE fehlschlägt (weil der Datensatz nicht vorhanden ist), wird eine INSERT-Abfrage ausgeführt, um einen neuen Datensatz zu erstellen.
Beide Methoden erfordern eine eindeutige Einschränkung (oder einen Primärschlüssel) für die relevante Spalte (z. B. IP).
Eine weitere wirksame Lösung ist die Verwendung der folgenden Aussage:
<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0); UPDATE visits SET hits = hits + 1 WHERE ip = $ip;</code>
Diese Methode beinhaltet die Verwendung der INSERT OR IGNORE-Anweisung, um zu versuchen, einen neuen Datensatz einzufügen. Die IGNORE-Klausel verhindert, dass ein Fehler ausgelöst wird, wenn der Datensatz bereits vorhanden ist. Die nachfolgende UPDATE-Anweisung versucht, die Trefferspalte für eine bestimmte IP-Adresse zu erhöhen. Wenn UPDATE erfolgreich ist, bedeutet dies, dass der Datensatz erfolgreich aktualisiert wurde. Wenn dies fehlschlägt, bedeutet dies, dass der Datensatz nicht vorhanden ist und von der INSERT-Anweisung erstellt wurde. Beachten Sie, dass LIKE
in =
geändert wurde, um eine genaue Übereinstimmung der IP-Adresse sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie simuliere ich MySQLs INSERT ON DUPLICATE KEY UPDATE in SQLite?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!