Co robi INSERT ON DUPLICATE KEY UPDATE w MySQL?

Co Robi Insert On Duplicate Key Update W Mysql



Podczas pracy z bazą danych MySQL użytkownicy mogą czasami napotkać błąd naruszenia zduplikowanego klucza podczas próby wstawienia nowego rekordu do tabeli. Ten błąd występuje, gdy istnieje już wiersz z tym samym kluczem podstawowym lub kluczem unikatowym. Jednak ten problem można rozwiązać, aktualizując istniejące rekordy o nowe wartości. W takich przypadkach włączenie opcji „ WSTAW PRZY AKTUALIZACJI DUPLIKATU KLUCZA ” skutecznie rozwiąże ten problem.

Ten post pokaże, co to jest „INSERT ON DUPLICATE KEY UPDATE” i jak to działa w MySQL.







Co robi INSERT ON DUPLICATE KEY UPDATE w MySQL?

W MySQL tzw WSTAW PRZY AKTUALIZACJI DUPLIKATU KLUCZA to zaawansowana funkcja instrukcji INSERT, która łączy dwie funkcjonalności w jedną operację. Na przykład wstawia rekord do określonej tabeli, jeśli dany rekord jeszcze nie istnieje. Jeśli jednak żądany rekord już istnieje, zaktualizuje istniejący rekord o nową wartość.



Aby włączyć funkcję INSERT ON DUPLICATE KEY UPDATE, użytkownicy muszą postępować zgodnie z poniższą składnią:



WŁÓŻ W [ Nazwa tabeli ] ( [ kol_1 ] , [ kol_2 ] , ... )
WARTOŚCI ( [ wartość_1 ] , [ wartość_2 ] , ... )
PRZY AKTUALIZACJI DUPLIKATU KLUCZA [ kol_1 ] = [ wartość_1 ] , [ kol_2 ] = [ wartość_2 ] , ...;





Określ nazwę tabeli, nazwy kolumn i wybrane wartości zamiast nazwa_tabeli, kolumna_1, kolumna_2, … i wartość_1, wartość_2, … itd.

Przykład: Jak korzystać z funkcji INSERT ON DUPLICATE KEY UPDATE w MySQL?



Najpierw połącz się z bazą danych MySQL z odpowiednimi uprawnieniami, a następnie wykonaj poniższe polecenie, aby pobrać dane z tabeli „linuxhint_author”:

WYBIERAĆ * Z linuxhint_author;

Polecenie select pobiera wszystkie rekordy z tabeli „linuxhint_author”:

Teraz uruchom następujące polecenie SQL, aby wstawić lub zaktualizować określony rekord w tabeli „linuxhint_author”, z włączoną funkcją „ON DUPLICATE KEY UPDATE”:

WSTAW DO linuxhint_author ( ID , imię i nazwisko, wiek, autorRank, adres e-mail )
WARTOŚCI ( 6 , „Alex Johnson” , 29 , 3 , „alex@example.com” )
PRZY AKTUALIZACJI DUPLIKATU KLUCZA
nazwa = WARTOŚCI ( nazwa ) ,
wiek = WARTOŚCI ( wiek ) ,
autorRank = WARTOŚCI ( autorRank ) ,
e-mail = WARTOŚCI ( e-mail ) ;

Ponieważ określony rekord nie istnieje jeszcze w tabeli „linuxhint_author”, zostanie pomyślnie wstawiony do wybranej tabeli:

Wstawmy zduplikowany rekord i zobaczmy, jak „ PRZY AKTUALIZACJI DUPLIKATU KLUCZA ” praca funkcji w MySQL:

WSTAW DO linuxhint_author ( ID , imię i nazwisko, wiek, autorRank, adres e-mail )
WARTOŚCI ( 3 , „Michael Johnson” , 28 , 4 , „michael@example.com” )
PRZY AKTUALIZACJI DUPLIKATU KLUCZA
nazwa = WARTOŚCI ( nazwa ) ,
wiek = WARTOŚCI ( wiek ) ,
autorRank = WARTOŚCI ( autorRank ) ,
e-mail = WARTOŚCI ( e-mail ) ;

Z poniższego fragmentu wyraźnie widać, że już istniejący rekord został pomyślnie zaktualizowany o nowe wartości:

Funkcję „WSTAW NA DUPLIKACIE KLUCZA” można również zastosować do określonej kolumny zamiast do całego rekordu:

WSTAW DO linuxhint_author ( ID , autorRank )
WARTOŚCI ( 3 , 2 )
PRZY AKTUALIZACJI DUPLIKATU KLUCZA authorRank = WARTOŚCI ( autorRank ) ;

W powyższym kodzie „authorRank” autora o identyfikatorze „3” jest aktualizowany do nowej wartości „2”:

Tak działa funkcja „INSERT ON DUPLICATE KEY UPDATE” w MySQL.

Wniosek

W MySQL tzw WSTAW PRZY AKTUALIZACJI DUPLIKATU KLUCZA to zaawansowana funkcja, która pozwala nam połączyć funkcjonalność wstawiania nowego wiersza i aktualizowania/modyfikowania już istniejącego wiersza w jednej operacji. Ta funkcja pomaga użytkownikom uniknąć błędu „zduplikowanego naruszenia klucza” podczas próby wstawienia nowego wiersza do określonej tabeli. W tym poście wyjaśniono, co to jest „INSERT ON DUPLICATE KEY UPDATE” i jak to działa w MySQL.