Ich habe ein System, das eine Ajax-Postanforderung enthält, die eine Zeile in eine Tabelle einfügt. Es scheint, dass manchmal der Ajax-Aufruf zweimal aufgerufen wird, was bedeutet, dass dieselben Daten zweimal in zwei benachbarten Zeilen eingefügt werden.MYSQL vermeiden, dieselbe Zeile zweimal einzufügen
Ich plane, zuerst eine Abfrage hinzuzufügen, um eine Zeile mit den gleichen Daten zu versuchen und auszuwählen, und wenn die Anzahl der Zeilen = 0 ist, füge sie hinzu. Gibt es einen besseren Weg, um zwei Abfragen zu vermeiden?
Dies wurde vorher diskutiert worden, siehe http://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in-mysql – cfedermann
einen alternativen Ansatz Bedenken Sie, dass das eigentliche Problem behebt auf der Seite, die den AJAX-Aufruf zweimal verursacht, anstatt defensive SQL-Abfragen zu schreiben. Ein "IsDirty" -Flag auf der Webseite vielleicht? –
Haben Sie keinen Primärschlüssel oder andere eindeutige Einschränkungen für Ihre Tabellen, um sicherzustellen, dass Sie keine doppelten Daten in Ihrer Datenbank erhalten? Du solltest. Und die ID-Spalte ist nicht ausreichend; Es ist praktisch und automatisch generiert, aber Sie sollten eine andere Kombination von Attributen haben, die einzigartig sind. Dann schlägt der Versuch fehl, die doppelten Daten einzufügen. Es muss eine Möglichkeit geben zu sagen, dass Sie dieselbe Zeile zweimal einfügen. Sonst könnte man die Frage nicht stellen. –