Vorwort Im Falle eines Primärschlüsselkonflikts oder eines eindeutigen Schlüsselkonflikts in MySql gibt es im Allgemeinen drei Einfügemethoden, um je nach Einfügemethode Fehler zu vermeiden.
einfügen ignorieren „insert ignore“ ignoriert die Daten, die bereits in der Datenbank vorhanden sind. Es werden neue Daten eingefügt, wenn basierend auf dem Primärschlüssel oder dem eindeutigen Index keine Daten in der Datenbank vorhanden sind. Wenn Daten vorhanden sind, werden diese übersprungen. Kleines Gehäuse Tabellenstruktur root:test> Tabelle t3G anzeigen erstellen *************************** 1. Reihe *************************** Tabelle: t3 Tabelle erstellen: CREATE TABLE `t3` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(20) DEFAULT NULL, `c3` int(11) DEFAULT NULL, Primärschlüssel (`id`), EINZIGARTIGER SCHLÜSSEL `uidx_c1` (`c1`) ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 1 Zeile im Satz (0,00 Sek.) root:test> wähle * aus t3; +----+------+------+------+ | Ich würde | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | ein | 1 | | 2 | 2 | ein | 1 | | 8 | NULL | NULL | 1 | | 14 | 4 | bb | NULL | | 17 | 5 | cc | 4 | +----+------+------+------+ 5 Zeilen im Satz (0,00 Sek.) Einfügen widersprüchlicher Daten root:test> insert ignore into t3 (c1,c2,c3) values(5,'cc',4),(6,'dd',5); Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,01 Sek.) Datensätze: 2 Duplikate: 1 Warnungen: 1 Ergebnisse anzeigen root:test> Warnungen anzeigen; +---------+------+-----------------------------------------+ | Ebene | Code | Nachricht | +---------+------+-----------------------------------------+ | Warnung | 1062 | Doppelter Eintrag „5“ für Schlüssel „uidx_c1“ | +---------+------+-----------------------------------------+ 1 Zeile im Satz (0,00 Sek.) root:test> wähle * aus t3; +----+------+------+------+ | Ich würde | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | ein | 1 | | 2 | 2 | ein | 1 | | 8 | NULL | NULL | 1 | | 14 | 4 | bb | NULL | | 17 | 5 | cc | 4 | | 18 | 6 | tt | 5 | +----+------+------+------+ 6 Zeilen im Satz (0,00 Sek.) ersetzen in „replace into“ versucht zuerst, die Daten einzufügen und sie zu löschen, wenn ein Konflikt gefunden wird. Andernfalls tun Sie nichts. Kleines Gehäuse root:test> Tabelle t3G anzeigen erstellen *************************** 1. Reihe *************************** Tabelle: t3 Tabelle erstellen: CREATE TABLE `t3` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(20) DEFAULT NULL, `c3` int(11) DEFAULT NULL, Primärschlüssel (`id`), EINZIGARTIGER SCHLÜSSEL `uidx_c1` (`c1`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 1 Zeile im Satz (0,00 Sek.) root:test> wähle * aus t3; +----+------+--------+------+ | Ich würde | c1 | c2 | c3 | +----+------+--------+------+ | 1 | 1 | cc | 4 | | 2 | 2 | tt | 5 | | 3 | 3 | qwewqe | 3 | +----+------+--------+------+ 3 Zeilen im Satz (0,00 Sek.) Einfügen widersprüchlicher Daten root:test> ersetze in t3 (c1,c2,c3) Werte(3,'neu',8); Abfrage OK, 2 Zeilen betroffen (0,02 Sek.) root:test> wähle * aus t3; +----+------+------+------+ | Ich würde | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | cc | 4 | | 2 | 2 | tt | 5 | | 4 | 3 | neu | 8 | +----+------+------+------+ 3 Zeilen im Satz (0,00 Sek.) Sie können sehen, dass der ursprüngliche Datensatz verschwunden ist und ein neuer Datensatz erschienen ist. Einfügen bei Aktualisierung doppelter Schlüssel Wenn am Ende der INSERT-INTO-Anweisung „Insert bei doppeltem Schlüsselupdate“ angegeben ist und doppelte Werte auftreten, wird das Update nach dem Auftreten der doppelten Werte ausgeführt. Fall root:test> Tabelle t3G anzeigen erstellen *************************** 1. Reihe *************************** Tabelle: t3 Tabelle erstellen: CREATE TABLE `t3` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(20) DEFAULT NULL, `c3` int(11) DEFAULT NULL, Primärschlüssel (`id`), EINZIGARTIGER SCHLÜSSEL `uidx_c1` (`c1`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 1 Zeile im Satz (0,00 Sek.) root:test> wähle * aus t3; +----+------+------+------+ | Ich würde | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | fds | 4 | | 2 | 2 | youtube | 3 | | 3 | 3 | czx | 5 | +----+------+------+------+ 3 Zeilen im Satz (0,00 Sek.) Fügen Sie Daten ein, die mit dem eindeutigen Schlüssel (Spalte c1) des Datensatzes ID=3 in Konflikt stehen. root:test> in t3(c1,c2,c3) Werte (3,'neu',5) einfügen bei doppelter Schlüsselaktualisierung c1=c1+3; Abfrage OK, 2 Zeilen betroffen (0,01 Sek.) root:test> wähle * aus t3; +----+------+------+------+ | Ich würde | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | fds | 4 | | 2 | 2 | youtube | 3 | | 3 | 6 | czx | 5 | +----+------+------+------+ 3 Zeilen im Satz (0,00 Sek.) Es ist ersichtlich, dass sich der Datensatz mit der ID = 3 geändert hat, c1 = Original c1 + 3 und die anderen Spalten sich nicht geändert haben. Oben sind die Details von vier MySql-Methoden zum Vermeiden doppelter Dateneinfügung aufgeführt. Weitere Informationen zum Vermeiden doppelter Dateneinfügung in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Acht Möglichkeiten zur Implementierung von Kommunikation in Vue
>>: Unterscheidung zwischen Linux-Hardlinks und Softlinks
Vorwort: Ich glaube, dass diejenigen, die dieses ...
eins. Übersicht über die IE8-Kompatibilitätsansic...
Inhaltsverzeichnis 1. Vertikales (längsseitiges) ...
Indextypen in MySQL Im Allgemeinen können sie in ...
In diesem Artikel erfahren Sie, wie Sie mit Vue e...
1. Überprüfen Sie die Zeitzone der Datenbank Vari...
In gewöhnlichen Projekten stoße ich häufig auf di...
Kontrollkästchen sind auf Webseiten sehr verbreit...
Das Computersystem ist: win7 Dieser Artikel basie...
Eine Transaktion ist eine logische Gruppe von Ope...
Inhaltsverzeichnis Einige grundlegende Anweisunge...
Designspezifikationen für WeChat Mini-Programmkom...
Flex(彈性布局) in CSS kann das Layout einer Webseite ...
MySQL behandelt GROUP BY- und DISTINCT-Abfragen i...
Das Inhaltsattribut wird im Allgemeinen in den Ps...