Modifié pour plus de clarté
Selon la spécification SQL, une clé primaire ne peut pas contenir NULL. Cela signifie que décorer une colonne avec "NOT NULL PRIMARY KEY" ou simplement "PRIMARY KEY" devrait faire la même chose. Mais vous comptez sur le moteur SQL en question qui suit correctement la norme SQL. Par exemple, en raison d'un bogue précoce, SQL Lite n'implémente pas correctement la norme et autorise les valeurs nulles dans les clés primaires non entières (voir sqlite.org/lang_createtable.html). Cela signifierait pour (au moins) SQLLite que les deux instructions font deux choses différentes.
Comme "NOT NULL PRIMARY KEY" indique clairement l'intention et continue d'appliquer des valeurs non nulles même si la clé primaire est supprimée, cela devrait être la syntaxe préférée.