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

Pourquoi ne puis-je pas mettre une contrainte sur nvarchar(max) ?

nvarchar(max) est vraiment un type de données différent de nvarchar(integer-length) . Ses caractéristiques ressemblent plus au text obsolète Type de données.

Si nvarchar(max) la valeur devient trop grande, comme text , il sera stocké à l'extérieur la ligne (une ligne est limitée à 8000 octets maximum) et un pointeur vers elle est stocké dans la ligne elle-même. Vous ne pouvez pas indexer efficacement un champ aussi volumineux et le fait que les données puissent être stockées ailleurs complique davantage la recherche et l'analyse de l'index.
Une contrainte unique nécessite l'application d'un index et, par conséquent, les concepteurs de SQL Server ont décidé d'interdire créant une contrainte unique dessus.