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
非负整数,指示可保留的最大十进制位数,包括小数点前面和后面的数字。有关详细信息,请参阅decimal 和 numeric (Transact-SQL)。
s
非负整数,指示小数点后面的小数数字可保留的最大十进制位数,它必须小于或等于精度值。有关详细信息,请参阅decimal 和 numeric (Transact-SQL)。
[ @nulltype = ] 'null_type'
指示别名数据类型处理空值的方式。null_type 的数据类型为 varchar(8),默认值为 NULL,并且必须用单引号引起来('NULL'、'NOT NULL' 或 'NONULL')。如果 null_type 没有通过 sp_addtype 显式定义,则将它设置为当前默认的为空性。使用 GETANSINULL 系统函数可确定当前默认的为空性。可以使用 SET 语句或 ALTER DATABASE 对该为空性进行调整。应显式定义为空性。如果 @phystype 的数据类型为 bit,并且未指定 @nulltype,则默认值为 NOT NULL。
注意: |
---|
null_type 参数只为该数据类型定义默认的为空性。如果在创建表的过程中使用别名数据类型时显式地定义了为空性,那么该为空性优先于已定义的为空性。有关详细信息,请参阅 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 权限。请注意,当使用 CREATE TYPE 语句而不是 sp_addtype 创建别名数据类型时,不会进行自动授权。 |
别名数据类型不能通过使用 SQL Server timestamp、table、xml、varchar(max)、nvarchar(max) 或 varbinary(max) 数据类型定义。
权限
要求具有 db_owner 或 db_ddladmin 固定数据库角色中的成员身份。
示例
A. 创建不允许空值的别名数据类型
以下示例创建名为 ssn
(社会保障号)的别名数据类型,该数据类型基于 SQL Server 所提供的 varchar 数据类型。ssn
数据类型用于那些保存 11 位数字的社会保障号 (999-99-9999) 的列。该列不能为 NULL。
请注意,varchar(11)
由单引号引了起来,这是因为它包含了标点符号(括号)。
USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO
B. 创建允许空值的别名数据类型
以下示例创建允许空值并且名为 birthday
的别名数据类型(基于 datetime
)。
USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';
C. 创建其他别名数据类型
以下示例为国内及国际电话和传真号码另外创建两个别名数据类型,分别为 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)