Edytowano dla jasności
Zgodnie ze specyfikacją SQL klucz podstawowy nie może zawierać wartości NULL. Oznacza to, że dekorowanie kolumny „NOT NULL PRIMARY KEY” lub po prostu „PRIMARY KEY” powinno zrobić to samo. Ale polegasz na tym silniku SQL, który jest zgodny ze standardem SQL. Na przykład, ze względu na wczesny błąd, SQL Lite nie implementuje poprawnie standardu i dopuszcza wartości null w niecałkowitych kluczach podstawowych (patrz sqlite.org/lang_createtable.html). Oznaczałoby to, że dla (przynajmniej) SQLLite te dwie instrukcje robią dwie różne rzeczy.
Ponieważ „NOT NULL PRIMARY KEY” wyraźnie wskazuje intencję i nadal wymusza wartości inne niż null, nawet jeśli klucz podstawowy zostanie usunięty, powinna to być preferowana składnia.