sp_addtype (Transact-SQL)
適用対象: SQL Server
別名データ型を作成します。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CREATE TYPE を使用してください。
構文
sp_addtype
[ @typename = ] N'typename'
, [ @phystype = ] N'phystype'
[ , [ @nulltype = ] 'nulltype' ]
[ , [ @owner = ] N'owner' ]
[ ; ]
引数
[ @typename = ] N'typename'
@typename は sysname で、既定値はありません。
別名データ型の名前。 エイリアス データ型の名前は、 identifiers の規則に従う必要があり 各データベースで一意である必要があります。 type は sysname で、既定値はありません。
[ @phystype = ] N'phystype'
別名データ型の基になっている物理データ型 (SQL Server 提供) です。 @phystype は既定値のない sysname であり、次のいずれかの値を指定できます。
- bigint、 int、 smallint、および tinyint
- binary、 varbinary(n)、および image
- bit
- char(n)、 nchar(n)、 varchar(n)、 nvarchar(n)、**text、および ntext
- datetime 型と smalldatetime 型
- decimal(s, P) および numeric(s, P)
- float と real
- money と smallmoney
- sql_variant
- uniqueidentifier
埋め込み空白文字または句読点を含むすべてのパラメーターを囲む引用符が必要です。 使用可能なデータ型の詳細については、「 Data 型」を参照してください。
n
選択したデータ型の長さを示す負でない整数。
P
小数点の左と右の両方に格納できる 10 進数の最大合計数を示す負でない整数。 詳細については、「 decimal と numericを参照してください。
s
小数点の右側に格納できる 10 進数の最大数を示す負以外の整数。有効桁数以下である必要があります。 詳細については、「 decimal と numericを参照してください。
[ @nulltype = ] 'nulltype'
別名データ型で NULL 値をどのように処理するかを指定します。 @nulltype は varchar(8)で、既定値は NULL
で、単一引用符 ('NULL'
、 'NOT NULL'
、または 'NONULL'
) で囲む必要があります。
@nulltypeが明示的に定義されていない場合は、現在の既定の null 許容値に設定されます。 GETANSINULL
システム関数を使用して、現在の既定の null 値の許容を判断します。 これは、 SET
ステートメントまたは ALTER DATABASE
を使用して調整できます。 NULL 値の許容属性は、明示的に定義してください。 @phystypeが bit で、@nulltypeが指定されていない場合、既定値は NOT NULL
です。
Note
@nulltype パラメーターは、このデータ型の既定の null 許容値のみを定義します。 テーブルの作成時に別名データ型を使用するときに null 許容が明示的に定義されている場合は、定義された null 許容よりも優先されます。 詳細については、
[ @owner = ] N'owner'
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
リターン コードの値
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 Server timestamp、 table、 xml、 varchar(max)、 nvarchar(max)、または varbinary(max) データ型を使用して定義することはできません。
アクセス許可
db_ownerまたは固定データベース ロールdb_ddladminメンバーシップが必要です。
例
A. null 値を許可しないエイリアス データ型を作成する
次の例では、SQL Server 提供の varchar データ型に基づいて、ssn
(社会保障番号) という名前のエイリアス データ型を作成します。 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 番号の両方に対して、さらに 2 つのエイリアス データ型 ( telephone
と fax
) を作成します。
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)