讨论: 如何修改自定义数据类型的类型和长度

zjcxc 2004-05-07 11:55:24
创建自定义数据类型后,在企业管理器中点右键属性,类型和长度都恢掉了,只有规则和默认值可以改

欢迎大家讨论如何来修改类型和长度


下面是我的修改方法:

/*--修改自定义数据类型精度的示例

假设要修改的自定义变量名为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 tb
go

--刷新视图
declare hCForEach cursor global for
select '[' + REPLACE(user_name(uid), N']', N']]')+'].['
+ REPLACE(object_name(id), N']', N']]')+ ']'
from dbo.sysobjects
where xtype='V' and status>=0

exec sp_MSforeach_worker 'sp_refreshview ''?'''
...全文
881 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijingxiezhuying 2004-07-23
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/2961/2961033.xml?temp=.6965906
zicxc 2004-05-11
  • 打赏
  • 举报
回复
支持楼主

zjcxc 2004-05-11
  • 打赏
  • 举报
回复
这个问题不是我提出的,是在论坛上处理问题时遇到的,我提出这个问题有两个目的:

1.看有没有更简单的方法
2.用自定义类型的人有一个误区,就是认为自定义类型可以被方便的修改,但恰好不是
所以开帖讨论的同时,提醒大家使用自定义类型注意一下



在需求发现变化的时候,我们怎样很容易的修改我们的软件已适应新的变化?这是一个很大的问题,根本就没有一个通用的模式,目前大家都在追寻这个东西,也在为这方面努力,但至少到目前为止,还没有通用的模式
blucecat 2004-05-10
  • 打赏
  • 举报
回复
zjcxc(邹建) ( ): 但在软件开发中没有一层不变的东西,即使再完美的软件也有补丁出现,那么在需求发现变化的时候,我们怎样很容易的修改我们的软件已适应新的变化?面向对象的思想应该(我只懂点皮毛,所以不敢肯定)是很好的解决了这个问题的。具体来说,自定义数据类型通常情况不用修改,但是你为什么要开这一贴呢?就是因为你也遇到需要修改自定义数据类型的情况,你不会因为“房子的地基没打好,只能拆了重建”的道理从而重建整个数据库吧?如果是这样你也不会开这一贴来讨论了,是吧?同样,一个函数,一个类最初可能写得不是很好,但又在多处调用了,我们难道就不能修改它一下,而要重写整个软件?

希望大家讨论斧正!
ntflying 2004-05-10
  • 打赏
  • 举报
回复
学习ing
internetcsdn 2004-05-10
  • 打赏
  • 举报
回复
DING DING
zjcxc 2004-05-09
  • 打赏
  • 举报
回复
如果房子的地基都没打好,当然是拆了房子重建.

你总不能说,我就只重新打地基,房子要保留吧?
quansui 2004-05-09
  • 打赏
  • 举报
回复
自定义类型的数据在企业管理器中见表时可以看见吗?
blucecat 2004-05-09
  • 打赏
  • 举报
回复
如果基类都写错了,难道不去修改吗?修改后子类的所有继承而来的属性/方法/事件等都会得到改变,这样多好呀
同样自定义类型也会有定义出错的时候,为什么就不能修改呢?
8992026 2004-05-09
  • 打赏
  • 举报
回复
呵呵,怎么扯到面向对象中继承的思想了?
难道面向对象中继承的思想是为了改来改去的?
我只知道继承就是让你不必修改基类而适应新的特征的方法之一,恰恰是让你不要修改基类代码的

不要上纲上线嘛
blucecat 2004-05-09
  • 打赏
  • 举报
回复
改来改去有什么不好,如果不能改不是恰恰违反了面向对象中继承的思想吗?

哦,我明白了,sqlserver本身就是反对面向对象的
zjcxc 2004-05-08
  • 打赏
  • 举报
回复
这个问比尔就清楚了.
prcgolf 2004-05-08
  • 打赏
  • 举报
回复
收藏!1
8992026 2004-05-08
  • 打赏
  • 举报
回复
呵呵,就是要搞困难些,免得子定义类型还改来改去
blucecat 2004-05-08
  • 打赏
  • 举报
回复
我想知道有什么原因导致不能很轻易的修改自定义数据类型?我的意思是说微软要实现这个功能难道很困难吗?
chludlf 2004-05-07
  • 打赏
  • 举报
回复
存储过程/自定义函数/触发器中的自定义数据类型 大多被使用,已被user或dbo使用的數據類型不能被修改和刪除, 要修改或刪除這些類型, 我的作法是釋放使用者,重定義為別的類型, 不知有沒有更好的方法!
leeboyan 2004-05-07
  • 打赏
  • 举报
回复
自定义数据类型:用的少!
先占个位子,等回来了看能不能插得上嘴!
zjcxc 2004-05-07
  • 打赏
  • 举报
回复
大家发表一下自己的意见/建议才行啊.

难道大家都不用自定义数据类型
txlicenhe 2004-05-07
  • 打赏
  • 举报
回复
楼上的都在收藏,看来没仔细看题哦。 楼主是想请大家帮忙解决问题来了。

偶不会。
victorycyz 2004-05-07
  • 打赏
  • 举报
回复

收。
加载更多回复(16)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧