用户自定义数据类型

作者:leen 来源:ITPOW(原创) 日期:2006-6-12

SQL Server 的用户自定义数据类型只是对已有数据的一种描述方式,并不是一种新的数据类型,利用它可以加强数据库字段数据类型的一致性维护,它在整个数据库中有效。不过很遗憾的是用户自定义数据类型建立之后其属性就不可直接更改,要更改则必须先删除再创建,但如果该自定义数据类型被引用就无法执行删除。

用 T-SQL 创建自定义数据类型
sp_addtype type, system_data_type[, null_type]
第一个参数为新的数据类型名称;
第二个参数为 SQL Server 提供的数据类型,某些情况下可以不用引号,但建议任何情况下都用单引号引起来;
第三个参数默认值为处理空值的方式,必须用单引号引起来,可选值为 'NULL' 或 'NOT NULL',默认为 'NULL'。
如:
exec sp_addtype ut_tel, 'varchar(15)', 'NOT NULL'
上述语句创建一个不可为空的 varchar(15) 数据类型用以存储电话号码,命名为 ut_tel,当我们在创建电话号码字段、处理电话号码变量时就可以用 ut_tel 代替 varchar(15)。当我们发现 varchar(15) 长度不够需要增加时,直接更改 ut_tel 即可,就相当于更改了所有的电话号码字段。需要说明的是,这里虽然指定了数据类型不可为 NULL,但假如我们在设计字段时,显示地指定该字段可为 NULL(即指定了“允许空”),那么我们仍然可以为该字段仍然可为 NULL。

用 T-SQL 删除自定义数据类型
sp_droptype type[, type2...]
这里 type 为用户自定义数据类型名称
如:
sp_droptype ut_tel
说明:如果在表定义内使用了某个用户定义的数据类型那么就不能除去它,但是 SQL Servert 电子丛书上说的“将某个规则或默认值绑定到这种数据类型也不能除去”是不正确的

查看哪些地方应用了某自定义数据类型
企业管理器->数据库->用户定义的数据类型->在数据类型上点右键->所有任务->显示相关性。

绑定规则
可以在自定义数据类型上绑定规则,比如电话号码必须以 '0' 开头避免忘记输入区号。同样在还可以在自定义数据类型上绑定默认值,但在表定义时,绑定的默认值不会起作用,需要另外显示指定。
绑定规则在前面已经讲过,但在向自定义数据类型绑定规则时有第三个参数:futureonly_flag,当该参数为 'futureonly' 时,表明该规则不对绑定之前使用了该数据类型的字段列起作用。

解除绑定规则
同样有第三个参数:futureonly_flag,当该参数为 'futureonly' 时,表明解除绑定之前使用了该数据类型的字段列仍然不会失去该规则。

相关文章