sysname
to wbudowany typ danych ograniczony do 128 znaków Unicode, który, IIRC, jest używany głównie do przechowywania nazw obiektów podczas tworzenia skryptów. Jego wartość nie może byćNULL
Zasadniczo jest to to samo, co używanie nvarchar(128) NOT NULL
EDYTOWAĆ
Jak wspomniał @Jim w komentarzach, nie sądzę, aby istniał przypadek biznesowy, w którym chciałbyś sysname
być szczery. Jest używany głównie przez firmę Microsoft podczas tworzenia wewnętrznych sys
tabel i procedur składowanych itp. W programie SQL Server.
Na przykład, wykonując polecenie Exec sp_help 'sys.tables'
, zobaczysz, że kolumna name
jest zdefiniowana w sysname
ten sposób, ponieważ wartość this jest w rzeczywistości obiektem samym w sobie (tabelą)
Za bardzo bym się tym martwił.
Warto również zauważyć, że dla tych osób, które nadal używają SQL Server 6.5 i niższych (czy nadal są ludzie używający?), Typ wbudowany sysname
jest odpowiednikiemvarchar(30)
Dokumentacja
sysname
jest zdefiniowany w dokumentacji dla nchar
invarchar
, w sekcji uwag:
sysname jest typem danych zdefiniowanym przez użytkownika, który jest funkcjonalnie równoważny z nvarchar (128) , z tą różnicą, że nie dopuszcza wartości null. sysname służy do odwoływania się do nazw obiektów bazy danych.
Aby wyjaśnić powyższe uwagi, domyślnie zdefiniowano nazwę sysname, ponieważ z NOT NULL
pewnością można zdefiniować ją jako dopuszczającą wartość null. Należy również zauważyć, że dokładna definicja może się różnić w zależności od wystąpienia programu SQL Server.
Korzystanie ze specjalnych typów danych
Sysname typ danych jest używany dla kolumn tabeli, zmienne i parametry przechowywane procedury, która przechowywanie nazw obiektów. Dokładna definicja
sysname jest związana z regułami dotyczącymi identyfikatorów. Dlatego może się różnić między wystąpieniami programu SQL Server. sysname jest funkcjonalnie takie samo jak nvarchar (128), z tym wyjątkiem, że domyślnie sysname NIE ma wartości NULL. We wcześniejszych wersjach SQL Server nazwa sys jest definiowana jako varchar (30).
Dodatkowe informacje na temat sysname
dopuszczania lub blokowania NULL
wartości można znaleźć tutaj https://stackoverflow.com/a/52290792/300863
Tylko dlatego, że jest to wartość domyślna (NIE NULL), nie gwarantuje, że tak będzie!