Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver le nom des contraintes non nulles dans SQL Server

Vous ne pouvez pas.

Alors que la syntaxe accepte un nom...

CREATE TABLE T
(
C INT CONSTRAINT NN NOT NULL
)

... et il est analysé et validé en tant que nom ...

CREATE TABLE T
(
C INT CONSTRAINT NN123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 NOT NULL
)
/* The identifier that starts with 'NN1234...6' is too long. Maximum length is 128. */

... ceci est alors ignoré et n'est en fait stocké nulle part.

Aucune ligne n'est ajoutée à sys.objects pour ces contraintes contrairement à d'autres. Il est simplement stocké en tant que propriété de bit de la colonne associée plutôt qu'en tant qu'objet de contrainte.