W tabeli pracownicy zdefiniowano klucz główny id typu INTEGER z atrybutami NOT NULL oraz AUTO_INCREMENT, a także pola imie oraz nazwisko. Tabela zawiera już rekord, w którym id ma wartość 5. Wykonanie w bazie danych MySQL przedstawionej w ramce kwerendy spowoduje
INSERT INTO pracownicy (id, imie, nazwisko) VALUES (5, 'Anna', 'Nowak');
A. błąd zduplikowanej wartości klucza głównego - rekord nie zostanie dodany.
B. dodanie rekordu do tabeli z wartością NULL w polu klucza głównego.
C. zastąpienie istniejącego rekordu o id równym 5 nowymi danymi.
D. dodanie rekordu do tabeli, a klucz główny przyjmie kolejną wolną wartość.
Poprawna odpowiedź to: błąd zduplikowanej wartości klucza głównego - rekord nie zostanie dodany. Pole id jest kluczem głównym, więc każda jego wartość musi być unikalna. Ponieważ w tabeli istnieje już rekord z id równym 5, polecenie INSERT próbujące wstawić drugi rekord z tą samą wartością narusza ograniczenie PRIMARY KEY. Atrybut AUTO_INCREMENT nie zmienia podanej jawnie wartości id - działa wtedy, gdy wartość klucza nie zostanie podana albo zostanie przekazana w sposób uruchamiający automatyczne nadanie numeru. Do zapamiętania: INSERT z ręcznie podanym id próbuje zapisać dokładnie tę wartość. W praktyce, aby uniknąć kolizji, najczęściej pomija się kolumnę AUTO_INCREMENT w instrukcji INSERT.
W tej sytuacji decydujące jest to, że w instrukcji INSERT jawnie podano id = 5. Odpowiedź „dodanie rekordu do tabeli, a klucz główny przyjmie kolejną wolną wartość” byłaby trafna wtedy, gdy kolumna id zostałaby pominięta w poleceniu albo baza miała samodzielnie nadać wartość AUTO_INCREMENT. Tutaj MySQL nie zastępuje podanej liczby kolejnym numerem. Odpowiedź „zastąpienie istniejącego rekordu o id równym 5 nowymi danymi” opisuje działanie innych konstrukcji, na przykład REPLACE albo INSERT ... ON DUPLICATE KEY UPDATE, ale zwykły INSERT nie aktualizuje istniejącego wiersza. Odpowiedź „dodanie rekordu do tabeli z wartością NULL w polu klucza głównego” także nie pasuje, ponieważ w zapytaniu podano wartość 5, a klucz główny ma ograniczenie NOT NULL. Poprawna odpowiedź to: błąd zduplikowanej wartości klucza głównego - rekord nie zostanie dodany. Typowy błąd polega na założeniu, że AUTO_INCREMENT zawsze ignoruje ręcznie wpisane id.