Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WSTAW DO... PRZY ZDUPLIKOWANEJ AKTUALIZACJI wszystkie wartości

INSERT INTO … ON DUPLICATE KEY UPDATE działa w ten sposób:

  • próbuje wstawić wiersz jak zwykle
  • jeśli wystąpi jakiekolwiek naruszenie ograniczenia w dowolnej kolumnie, wykonuje UPDATE zamiast tego w istniejącym wierszu, za pomocą którego INSERT oświadczenie sprzeczne

Oznacza to po prostu, jeśli UPDATE sama instrukcja powiodłaby się, jej ON DUPLICATE KEY UPDATE odpowiednik również zadziała. Oznacza to, że oczywiście nie możesz naruszać żadnych ograniczeń w UPDATE albo cała sprawa się nie powiedzie (np. próba ustawienia wartości na UNIQUE kolumna, która już istnieje w innym wierszu).

Jeśli ponownie ustawisz tę samą wartość w tej samej kolumnie, jest to w zasadzie brak operacji. Wartość w kolumnie nie zmienia się i dlatego nie może powodować żadnych błędów (załóżmy, że nie masz żadnego naprawdę fajnego BEFORE UPDATE wyzwalacze, które mogą źle się zachowywać). Liczba kolumn jest tutaj nieistotna, możesz zmienić tyle lub tylko kilka w jednej instrukcji, ile chcesz.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie Ajax z zapytaniem PHP / MySQLi zwracającym błędne wyniki

  2. JSON to MYSQL - czy odpowiedź JSON jest poprawnie sformatowana - pętla poprawnie?

  3. Zapytanie o konkretną wartość za pomocą tabeli przestawnej mySQL

  4. Parametryzacja skryptu SQL

  5. Wykorzystanie mocy klastrów w kontekście baz danych?