自定义数据类型的问题
我已经定义了一个自定义的数据类型,并且已经大量应用了,现在我想改变它的精度,该怎么办? 问题点数:100、回复次数:10Top
1 楼caiyunxia(夏才云)回复于 2004-04-02 21:28:32 得分 0
直接改变自定义的数据类型的精度即可Top
2 楼progress99(如履薄冰)回复于 2004-04-02 21:31:35 得分 0
先刪除再添加:
exec sp_droptype phone
exec sp_addtype phone,'char(12)','not null'Top
3 楼progress99(如履薄冰)回复于 2004-04-02 21:32:56 得分 0
自定义的数据类型不能更改,隻能先刪除再添加,在企業管理器中精度都是顯灰的。Top
4 楼spanzhang(红尘斩丝客)回复于 2004-04-02 21:37:51 得分 0
exec sp_droptype phone的时候报该数据类型正在被使用。Top
5 楼zjcxc(邹建)回复于 2004-04-02 21:43:01 得分 0
这种没办法的,你先要修改表,命名它不引用这种数据类型.
然后才能删除并增加这种自定义类型.Top
6 楼progress99(如履薄冰)回复于 2004-04-02 21:45:39 得分 40
你在查詢分析器中執行exec sp_droptype phone,會返回使用了phone自定义类型的表,隻能先改成其他的,注意更改數據類型時的精度問題,可大不可小。Top
7 楼zjcxc(邹建)回复于 2004-04-02 21:48:50 得分 0
--你可以考虑这样处理:
--1.修改旧的自定义变量类型的名称
exec sp_rename 'aa','aa_bak','USERDATATYPE'
go
--2.重新新增自定义变量(按新的精度)
EXEC sp_addtype N'aa', N'numeric(20,2)', N'not null'
go
--3.修改表,使用新增的自定义变量
Top
8 楼zjcxc(邹建)回复于 2004-04-02 21:55:28 得分 60
/*--下面是一个完整的演示
假设要修改的自定义变量名为aa
--*/
--1.修改自定义变量类型的名称
exec sp_rename 'aa','aa_bak','USERDATATYPE'
go
--2.新增自定义变量(按新的精度)
EXEC sp_addtype N'aa', N'numeric(20,2)', N'not null'
go
--3.修改表,使用新增的自定义变量
declare @s varchar(8000)
declare tb cursor local
for select 'alter table ['+object_name(a.id)+'] alter column ['
+a.name+'] aa'
from syscolumns a join systypes b on a.xusertype=b.xusertype
where b.name='aa_bak'
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tbTop
9 楼spanzhang(红尘斩丝客)回复于 2004-04-02 23:24:13 得分 0
太麻烦了:(Top
10 楼spanzhang(红尘斩丝客)回复于 2004-04-02 23:33:25 得分 0
xie xie ge wei! fang fen xian.Top




