MySQL bietet vielseitige Mechanismen für die Dateneinfügung, sodass Sie bedingte Einfügungen implementieren können, die doppelte Zeilen verhindern.
Ein Szenario umfasst eine Tabelle namens x_table mit den Spalten „Instanz“, „Benutzer“ und „Element“, wobei „Instanz“ eindeutig ist. Um eine neue Zeile nur dann in x_table einzufügen, wenn die Kombination aus Benutzer und Element noch nicht vorhanden ist, führen Sie die folgenden Schritte aus:
Wenn Ihre MySQL-Version das Auswählen unterstützt Betrachten Sie beim Einfügen die folgende Abfrage aus anderen Tabellen:
INSERT INTO x_table(instance, user, item) SELECT 919191, 123, 456 FROM dual WHERE NOT EXISTS ( SELECT * FROM x_table WHERE user = 123 AND item = 456 );
In dieser Abfrage ist dual eine einzeilige Tabelle, die die Verfügbarkeit einer gültigen Zeile sicherstellt, während NOT Die EXISTS-Bedingung prüft, ob doppelte Zeilen vorhanden sind. Wenn keine Übereinstimmungen gefunden werden, wird die neue Zeile eingefügt.
Alternativ bietet die MERGE-Anweisung ein leistungsstarkes Werkzeug für bedingte Einfügungen. Die Syntax lautet wie folgt:
MERGE INTO x_table AS target USING ( SELECT 919191 AS instance, 123 AS user, 456 AS item ) AS source ON (target.user = source.user AND target.item = source.item) WHEN NOT MATCHED THEN INSERT VALUES (source.instance, source.user, source.item);
In diesem Fall gibt die USING-Klausel die einzufügenden Werte an, während die ON-Klausel die Übereinstimmungskriterien festlegt. Wenn in der Zieltabelle (x_table) keine passenden Zeilen vorhanden sind, wird INSERT ausgeführt.
Das obige ist der detaillierte Inhalt vonWie stellt man beim Einfügen von Daten in MySQL eindeutige Zeilen sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!