SQL bietet verschiedene Methoden zum Einfügen oder Aktualisieren von Datensätzen in eine Datenbanktabelle basierend auf der Existenz eines eindeutigen Schlüssels. In diesem Handbuch wird erklärt, warum das, was Sie versucht haben, nicht funktioniert, und es werden zwei getestete Lösungen bereitgestellt, die die INSERT ... ON DUPLICATE KEY UPDATE
-Anweisung von MySQL verwenden.
Warum Ihr Versuch fehlgeschlagen ist
ON DUPLICATE KEY UPDATE
zu verwenden, aber in Ihrer Spalte subs_email
fehlt eine eindeutige Einschränkung, was dazu führt, dass die Abfrage fehlschlägt. IF EXISTS
und BEGIN/END
, die Sie verwenden möchten, weisen keine gültige SQL-Syntax für MySQL auf. Lösung 1: Erstellen Sie eine eindeutige Einschränkung und verwenden Sie INSERT ... ON DUPLICATE KEY UPDATE
subs_email
gibt: <code class="language-sql">ALTER TABLE subs ADD UNIQUE (subs_email);</code>
<code class="language-sql">INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE subs_name = VALUES(subs_name), subs_birthday = VALUES(subs_birthday);</code>
Lösung 2: Parametrisierte vorbereitete Anweisung mit ON DUPLICATE KEY UPDATE
<code class="language-java">String sql = "INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?)" + " ON DUPLICATE KEY UPDATE subs_name = ?, subs_birthday = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, name); preparedStatement.setString(2, email); preparedStatement.setString(3, birthday); preparedStatement.setString(4, name); // 重复键更新的第二个参数 preparedStatement.setString(5, birthday); // 重复键更新的第三个参数 preparedStatement.executeUpdate();</code>
Denken Sie daran, Parameterplatzhalter zu verwenden, um SQL-Injection-Angriffe zu verhindern.
Durch die Anwendung dieser Lösungen können Sie Datensätze basierend auf der Eindeutigkeit von subs_email
Spalten effizient in Datenbanktabellen einfügen oder aktualisieren.
Das obige ist der detaillierte Inhalt vonWie kann ich mit IF EXISTS UPDATE ELSE INSERT INTO effizient Datensätze in MySQL einfügen oder aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!