sp_addtype (Transact-SQL)
別名データ型を作成します。
重要 |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。 新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに CREATE TYPE を使用してください。 |
構文
sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ] ;
引数
[ @typename= ] type
別名データ型の名前を指定します。データ型の名前は、識別子の規則に従っている必要があり、各データベース内で一意であることが必要です。type のデータ型は sysname で、既定値はありません。[ @phystype=] system_data_type
別名データ型の基になる物理データ型 (SQL Server で提供されるデータ型) を指定します。system_data_type のデータ型は sysname で、既定値はありません。次のいずれかの値を指定できます。bigint
binary(n)
bit
char(n)
datetime
decimal
float
image
int
money
nchar(n)
ntext
numeric
nvarchar(n)
real
smalldatetime
smallint
smallmoney
sql_variant
text
tinyint
uniqueidentifier
varbinary(n)
varchar(n)
空白または区切り記号を含むパラメータはすべて、引用符で囲む必要があります。使用できるデータ型の詳細については、「データ型 (Transact-SQL)」を参照してください。
n
選択したデータ型の長さを示す、負以外の整数を指定します。P
小数点の左側と右側に格納できる 10 進数の最大合計桁数を示す、負以外の整数を指定します。詳細については、「decimal 型と numeric 型 (Transact-SQL)」を参照してください。s
小数点の右側に格納できる 10 進数の最大桁数を示す、負以外の整数を指定します。有効桁数以下であることが必要です。詳細については、「decimal 型と numeric 型 (Transact-SQL)」を参照してください。[ @nulltype = ] 'null_type'
別名データ型で NULL 値をどのように処理するかを指定します。null_type のデータ型は varchar(8) で、既定値は NULL です。'NULL'、'NOT NULL'、または 'NONULL' のように、値を単一引用符で囲んで指定してください。null_type が sp_addtype で明示的に定義されていない場合は、既定の NULL 値の許容属性が使用されます。既定の NULL 値の許容属性を確認するには、GETANSINULL システム関数を使用します。この設定は、SET ステートメントまたは ALTER DATABASE を使用して変更できます。NULL 値の許容属性は、明示的に定義してください。@phystype が bit 型で、@nulltype が指定されない場合、既定値は NOT NULL になります。注意 null_type パラメータは、このステートメントで指定したデータ型に対する既定の NULL 値の許容属性を定義するものです。ただし別名データ型を使用してテーブルを作成する際に NULL 値の許容属性を明示的に定義した場合は、このパラメータで定義した NULL 値の許容属性よりも優先されます。詳細については、「ALTER TABLE (Transact-SQL)」および「CREATE TABLE (Transact-SQL)」を参照してください。
戻り値
0 (成功) または 1 (失敗)
結果セット
なし
説明
別名データ型の名前は、データベース内で一意であることが必要ですが、異なる名前の別名データ型で同じ定義を使用することは可能です。
sp_addtype を実行すると、別名データ型が作成され、特定のデータベースの sys.types カタログ ビューに表示されます。別名データ型をすべての新しいユーザー定義データベース内で使用できるようにする必要がある場合は、model に追加してください。作成した別名データ型は、CREATE TABLE または ALTER TABLE で使用できます。別名データ型にデフォルトやルールをバインドすることもできます。sp_addtype を使用して作成したすべてのスカラ別名データ型は、dbo スキーマに格納されます。
別名データ型は、データベースの既定の照合順序を継承します。別名データ型の列と変数の照合順序は、Transact-SQL の CREATE TABLE、ALTER TABLE、DECLARE @local\_variable ステートメントで定義されます。データベースの既定の照合順序を変更すると、該当するデータ型の新しい列と変数にだけ新しい照合順序が適用されます。既存の列と変数の照合順序は変更されません。
セキュリティに関する注意 |
---|
旧バージョンとの互換性のため、データベース ロール public には自動的に、sp_addtype を使用して作成した別名データ型の REFERENCES 権限が与えられます。sp_addtype ではなく CREATE TYPE ステートメントを使用して別名データ型を作成した場合は、自動的に権限が与えられないことに注意してください。 |
SQL Servertimestamp、table、xml、varchar(max)、nvarchar(max)、または varbinary(max) 型を使用して別名データ型を定義することはできません。
権限
db_owner 固定データベース ロールまたは db_ddladmin 固定データベース ロールのメンバシップが必要です。
例
A. NULL 値を許容しない別名データ型を作成する
次の例では、SQL Server の varchar 型を基にした ssn (social security number : 社会保障番号) という別名データ型を作成します。ssn 型は、11 桁の社会保障番号 (999-99-9999) を格納する列で使用されます。この列で NULL 値は許容されません。
varchar(11) には区切り記号 (かっこ) が含まれているため、単一引用符で囲みます。
USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO
B. NULL 値を許容する別名データ型を作成する
次の例では、NULL 値を許容する、datetime 型に基づく birthday という別名データ型を作成します。
USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';
C. 追加の別名データ型を作成する
次の例では、国内および海外用の電話番号と FAX 番号の両方に対して、telephone と fax という 2 つの別名データ型を追加作成します。
USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO
関連項目