Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come trovare il nome dei vincoli non nulli in SQL Server

Non puoi.

Anche se la sintassi accetta un nome...

CREATE TABLE T
(
C INT CONSTRAINT NN NOT NULL
)

... e viene analizzato e convalidato come nome ...

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

... questo viene quindi ignorato e in realtà non viene archiviato da nessuna parte.

Nessuna riga viene aggiunta a sys.objects per questi a differenza di altri vincoli. Viene semplicemente archiviato come proprietà bit della colonna associata anziché come oggetto vincolo.