sysname
je vestavěný datový typ omezený na 128 znaků Unicode, který, IIRC, se používá především k ukládání názvů objektů při vytváření skriptů. Jeho hodnota nemůže být NULL
Je to v podstatě stejné jako použití nvarchar(128) NOT NULL
UPRAVIT
Jak uvedl @Jim v komentářích, nemyslím si, že ve skutečnosti existuje obchodní případ, kdy byste použili sysname
být upřímný. Používá ho hlavně Microsoft při budování interního sys
tabulky a uložené procedury atd. v rámci SQL Server.
Například spuštěním Exec sp_help 'sys.tables'
uvidíte, že sloupec name
je definován jako sysname
je to proto, že hodnota this je ve skutečnosti objekt sám o sobě (tabulka)
Moc bych se tím netrápil.
Za zmínku také stojí, že pro ty lidi, kteří stále používají SQL Server 6.5 a nižší (jsou stále lidé, kteří jej používají?) je vestavěný typ sysname
je ekvivalentem varchar(30)
Dokumentace
sysname
je definován v dokumentaci pro nchar
a nvarchar
, v sekci poznámky:
název systému je systémem dodaný uživatelsky definovaný datový typ, který je funkčně ekvivalentní nvarchar(128) , kromě toho, že není nulovatelný. název systému se používá k odkazování na názvy databázových objektů.
Abychom objasnili výše uvedené poznámky, výchozí název systému je definován jako NOT NULL
je jistě možné ji definovat jako nulovatelnou. Je také důležité poznamenat, že přesná definice se může lišit mezi instancemi SQL Server.
Použití speciálních datových typů
název systému datový typ se používá pro sloupce tabulky, proměnné a parametry uložené procedury, které ukládají názvy objektů. Přesná definicenázev systému souvisí s pravidly pro identifikátory. Proto se může lišit mezi instancemi SQL Server. název systému je funkčně stejný jako nvarchar(128) kromě toho, že ve výchozím nastavení je název systému NENÍ NULL. Dřívější verze SQL Server, sysname je definován jako varchar(30).
Některé další informace o sysname
povolení nebo zakázání NULL
hodnoty najdete zde https://stackoverflow.com/a/52290792/300863
Jen proto, že je výchozí (není NULL), nezaručuje, že tomu tak bude!