Heim > Datenbank > MySQL-Tutorial > Wie simuliere ich MySQLs INSERT ON DUPLICATE KEY UPDATE in SQLite?

Wie simuliere ich MySQLs INSERT ON DUPLICATE KEY UPDATE in SQLite?

Linda Hamilton
Freigeben: 2025-01-15 14:01:44
Original
257 Leute haben es durchsucht

How to Simulate MySQL's INSERT ON DUPLICATE KEY UPDATE in SQLite?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage