¿Por qué puedo crear una tabla con CLAVE PRINCIPAL en una columna que admite nulos?

El siguiente código crea una tabla sin generar ningún error:

CREATE TABLE test(
ID INTEGER NULL,
CONSTRAINT PK_test PRIMARY KEY(ID)
)

Tenga en cuenta que no puedo insertar un valor NULL, como se esperaba:

INSERT INTO test
VALUES(1),(NULL)
ERROR:  null value in column "id" violates not-null constraint
DETAIL:  Failing row contains (null).
********** Error **********

ERROR: null value in column "id" violates not-null constraint
SQL state: 23502
Detail: Failing row contains (null).

¿Por qué puedo crear una tabla con una definición autocontradictoria? La columna de ID se declara explícitamente como NULLable, y es implícitamente no anulable, como parte de la CLAVE PRIMARIA. ¿Tiene sentido?

Edit: ¿no sería mejor si esta autocomplaciente CREATE TABLE simplemente fallara allí?

Respuestas a la pregunta(3)

Su respuesta a la pregunta