有多个表中有一字段为PartNo或fmid,fpid,为varchar(20),因业务需要,现要将其长度改为varchar(100),请教高手如何实现?
例:
表 fact_goods 含fpid
表 fact_raw 含fmid
表 fact_pmrelate 含fpid,fmid,此表参照fact_goods 中fpid,fact_raw 中fmid,请问如何才能一次性将其长度增加至varchar(100),谢谢!
例:
表 fact_goods 含fpid
表 fact_raw 含fmid
表 fact_pmrelate 含fpid,fmid,此表参照fact_goods 中fpid,fact_raw 中fmid,请问如何才能一次性将其长度增加至varchar(100),谢谢!
找到匹配的column则修改表,没有找到则不修改.
Alter Table fact_goods Alter column fpid Varchar(100) Null
Alter Table fact_raw Alter column fmid Varchar(100) NullAlter Table fact_pmrelate Alter column fpid Varchar(100) Null
Alter Table fact_pmrelate Alter column fmid Varchar(100) Null2.如果不知道哪几张表,那么通过循环表 及 字段更新
Select * From Sysobjects where xtype='u' 找出所有表
select * from syscolumns where id=object_id('表名') 找出表中的所有字段
找到后用更新语句更新即可
这种操作比较复杂,建议使用第一种方式
alter column fmid varchar(100)
go 消息 5074,级别 16,状态 1,第 1 行
对象'PK_FACT_RAW' 依赖于 列'fmid'。
消息 5074,级别 16,状态 1,第 1 行
对象'FK_MERGERRA_RELATIONS_FACT_RAW' 依赖于 列'fmid'。
消息 5074,级别 16,状态 1,第 1 行
对象'FK_FACT_PMR_REF_3848_FACT_RAW' 依赖于 列'fmid'。
消息 4922,级别 16,状态 9,第 1 行
由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN fmid 失败。