sysname
は128Unicode文字に制限された組み込みデータ型であり、IIRCは、主にスクリプトの作成時にオブジェクト名を格納するために使用されます。その値をNULL
にすることはできません
基本的には、nvarchar(128) NOT NULL
を使用するのと同じです。
編集
コメントで@Jimが述べたように、sysname
を使用するビジネスケースは実際にはないと思います。 実を言うと。これは主に、内部のsys
を構築するときにMicrosoftによって使用されます。 SQLServer内のテーブルやストアドプロシージャなど。
たとえば、Exec sp_help 'sys.tables'
を実行します。 列name
が表示されます sysname
として定義されています これは、これの値が実際にはそれ自体がオブジェクト(テーブル)であるためです
あまり心配しません。
また、SQL Server 6.5以下をまだ使用している人(まだ使用している人はいますか?)には、組み込みタイプのsysname
が組み込まれていることにも注意してください。 varchar(30)
と同等です
ドキュメント
sysname
nchar
のドキュメントで定義されています およびnvarchar
、備考欄:
sysname nvarchar(128)と機能的に同等のシステム提供のユーザー定義データ型です。 、null許容ではないことを除いて。 sysname データベースオブジェクト名を参照するために使用されます。
上記のコメントを明確にするために、デフォルト sysname NOT NULL
として定義されています null許容型として定義することは確かに可能です。正確な定義はSQLServerのインスタンス間で異なる可能性があることに注意することも重要です。
特別なデータ型の使用
sysname データ型は、オブジェクト名を格納するテーブル列、変数、およびストアドプロシージャパラメータに使用されます。 sysnameの正確な定義 識別子のルールに関連しています。したがって、SQLServerのインスタンス間で変動する可能性があります。 sysname 機能的にはnvarchar(128)と同じです ただし、デフォルトでは、 sysname NULLではありません。 SQL Serverの以前のバージョン、 sysname varchar(30)として定義されています。
sysname
に関する詳細情報 NULL
を許可または禁止する 値はここで見つけることができますhttps://stackoverflow.com/a/52290792/300863
デフォルトである(NOT NULLである)からといって、それがデフォルトになることを保証するものではありません!