W tabeli, w której klucz główny ma typ INTEGER, jest oznaczony jako NOT NULL oraz ma mechanizm AUTO_INCREMENT, baza danych przejmuje odpowiedzialność za nadawanie wartości identyfikatora. Instrukcja:
INSERT INTO pracownicy (imie, nazwisko) VALUES ('Anna', 'Nowak');
zawiera jawnie podaną listę kolumn (imie, nazwisko), więc liczba wartości w części VALUES odpowiada liczbie wskazanych pól. To oznacza, że nie występuje problem "nieprawidłowej liczby pól".
W MySQL (w typowej konfiguracji) jeśli wstawiasz rekord i nie podajesz wartości kolumny AUTO_INCREMENT, silnik przypisuje jej automatycznie następną wartość licznika. Dzięki temu warunek NOT NULL jest spełniony: do klucza głównego nie trafia NULL, tylko konkretna liczba.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- "zignorowanie polecenia, tabela pozostanie bez zmian" – poprawny INSERT nie jest ignorowany; jeśli nie ma naruszeń ograniczeń, rekord zostanie dodany.
- "…zostanie przydzielona wartość NULL" – AUTO_INCREMENT służy właśnie temu, by nie trzeba było wstawiać NULL ani ręcznie nadawać identyfikatora. Przy poprawnym użyciu mechanizmu baza generuje wartość liczbową.
- "błąd nieprawidłowej liczby pól" – taki błąd jest typowy, gdy nie podasz listy kolumn, a liczba wartości nie zgadza się z liczbą kolumn tabeli, albo gdy lista kolumn i VALUES mają różną długość. Tutaj lista i VALUES są spójne.
W praktyce to częsty wzorzec w aplikacjach internetowych: formularz przesyła dane imienia i nazwiska, a identyfikator rekordu jest generowany po stronie bazy.