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)」を参照してください。 |
結果セット
なし
解説
別名データ型の名前は、データベース内で一意であることが必要ですが、異なる名前の別名データ型で同じ定義を使用することは可能です。
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 Server timestamp、table、xml、varchar(max)、nvarchar(max)、または varbinary(max) 型を使用して別名データ型を定義することはできません。
権限
db_owner 固定データベース ロールまたは db_ddladmin 固定データベース ロールのメンバシップが必要です。
戻り値
0 (成功) または 1 (失敗)
例
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
参照
関連項目
データベース エンジンのストアド プロシージャ (Transact-SQL)
CREATE TYPE (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE RULE (Transact-SQL)
sp_bindefault (Transact-SQL)
sp_bindrule (Transact-SQL)
sp_droptype (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindefault (Transact-SQL)
sp_unbindrule (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)