| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 964 人关注过本帖
标题:自認為比較難的問題(如何用語句改變欄位長度)
只看楼主 加入收藏
洋葱屁股
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-1-11
收藏
 问题点数:0 回复次数:7 
自認為比較難的問題(如何用語句改變欄位長度)
SQL SERVER 2000 數據庫有一個欄位.例如:Empid(員工工號),可能用在很多資料表中.
原有類型 varchar 10 ,現在需要升級為 varchar 12 ,
目前的方式:
打開每個表的設計器,一個一個改

請問有沒有什麼快捷的方法呢?
搜索更多相关主题的帖子: SQL varchar SERVER Empid 
2007-03-05 10:09
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 
alter table tablename alter column columnname varchar(12)

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-03-05 10:18
洋葱屁股
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-1-11
收藏
得分:0 

看來sql對什麼都可以操作
這樣還有點問題: 如果是主索引或有關聯表,就無法操作

是不是應該先將主索引取消,等更改完之後再還原成主索引呢?

2007-03-05 11:00
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 
declare @a varchar(10)
set @a=你的列名
select b.name from syscolumns a,sysobjects b where a.name=@a and b.xtype='u' and a.id=b.id
然后循环执行楼上给你的语句就可以
2007-03-05 11:03
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 
关联表的没有试过用语句来执行
不过可以肯定的是:如果不先删除关联,就不能修改列
你可以先把关联都去掉
然后修改表完成再加主外键
2007-03-05 11:07
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

ALTER COLUMN

指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。有关更多信息,请参见 sp_dbcmptlevel。

要更改的列不能是:

数据类型为 text、image、ntext 或 timestamp 的列。


表的 ROWGUIDCOL 列。


计算列或用于计算列中的列。


被复制列。


用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。


用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。


用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。


用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。


有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。


帮助中说有主键和外键约束的不能alter column


sp_configure 'allow update', 1
reconfigure with override
update syscolumns set length=17 from sysobjects where syscolumns.name='id' and sysobjects.id=syscolumns.id and sysobjects.name='student'
sp_configure 'allow update', 0
reconfigure with override
改系统表可以,有外键的表就算存在也不会影响,不过如果是建完表后,再用改系统表的方法,改完后再建立外键的表,长度还是要和原来的表一样,这点我感到疑惑


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-03-05 12:17
洋葱屁股
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-1-11
收藏
得分:0 


感謝 棉花糖 的 支持~~謝謝
2007-03-05 13:11
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

我也谢谢你,我以前从没遇到过这种问题


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-03-05 13:13
快速回复:自認為比較難的問題(如何用語句改變欄位長度)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026909 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved