INSERT INTO oder UPDATE mit zwei Bedingungen
Problembeschreibung:
Der Benutzer stößt auf a zeitraubende Herausforderung: Einfügen einer neuen Zeile in eine Tabelle, wenn nicht bereits eine Zeile vorhanden ist, die zwei bestimmte Bedingungen erfüllt ('Name' und 'Datumsangaben') oder Aktualisieren der vorhandenen Zeile, wenn eine Übereinstimmung gefunden wird.
Lösung:
Die Antwort liegt in MySQLs INSERT INTO ... ON DUPLICATE KEY UPDATE Syntax. Diese leistungsstarke Funktion ermöglicht eine effiziente Datenbearbeitung durch das Einfügen einer neuen Zeile, wenn keine passende Zeile vorhanden ist, oder durch das Aktualisieren der vorhandenen Zeile, wenn eine eindeutige Schlüsselbeschränkung verletzt wird.
Um das gewünschte Verhalten zu erreichen, muss die Tabelle über einen eindeutigen Schlüssel verfügen definiert (in diesem Fall ein zusammengesetzter Schlüssel) für die beiden Spalten („Name“ und „Datum“). Dieser Schlüssel dient als Bezeichner für eindeutige Zeilen in der Tabelle.
Beispielszenario:
Betrachten Sie die folgende Tabellenstruktur:
create table myThing ( id int auto_increment primary key, name int not null, values1 int not null, values2 int not null, dates date not null, unique key(name,dates) -- This line is crucial );
Einfügen Eine neue Zeile mit der folgenden Anweisung erstellt entweder eine neue Zeile oder aktualisiert eine vorhandene, abhängig von der Existenz einer Zeile mit demselben „Namen“ und 'dates':
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
Beispielergebnis:
select * from myThing; +----+------+---------+---------+------------+ | id | name | values1 | values2 | dates | +----+------+---------+---------+------------+ | 1 | 777 | 1 | 4 | 2015-07-11 | | 2 | 778 | 1 | 1 | 2015-07-11 | +----+------+---------+---------+------------+
Wie das Beispiel zeigt, verarbeitet die Syntax INSERT INTO ... ON DUPLICATE KEY UPDATE beides effizient Einfüge- und Aktualisierungsvorgänge basierend auf dem definierten eindeutigen Schlüssel, wodurch komplexe gespeicherte Prozeduren überflüssig werden.
Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Zeile basierend auf zwei Bedingungen effizient EINFÜGEN oder AKTUALISIEREN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!