Voor de duidelijkheid bewerkt
Volgens de SQL-specificatie mag een primaire sleutel geen NULL bevatten. Dit betekent dat het versieren van een kolom met "NIET NULL PRIMARY KEY" of alleen "PRIMARY KEY" hetzelfde zou moeten doen. Maar u vertrouwt erop dat de SQL-engine in kwestie correct de SQL-standaard volgt. Als voorbeeld, vanwege een vroege bug, implementeert SQL Lite de standaard niet correct en staat het null-waarden toe in primaire sleutels zonder gehele getallen (zie sqlite.org/lang_createtable.html). Dat zou voor (tenminste) SQLLite betekenen dat de twee statements twee verschillende dingen doen.
Aangezien "NIET NULL PRIMARY KEY" duidelijk de intentie aangeeft en doorgaat met het geven van niet-null-waarden, zelfs als de primaire sleutel wordt verwijderd, zou dat de voorkeurssyntaxis moeten zijn.