首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

MSSQL2008 批改列长度时不成功,请指点

2012-09-24 
MSSQL2008 修改列长度时不成功,请指点这里是创建表的脚本;CREATE TABLE [dbo].[XXXXXX]([Objid] [int] IDE

MSSQL2008 修改列长度时不成功,请指点
这里是创建表的脚本;
CREATE TABLE [dbo].[XXXXXX]
  (
  [Objid] [int] IDENTITY(1, 1)
  NOT NULL ,
  [Parentid] [int] NOT NULL ,
  [Objname] [varchar](20) NULL ,
  [Objjc] [varchar](50) NULL ,
  [AFIRSTQ0001] [datetime] NULL ,
  [ESECONDQ0722] [datetime] NULL ,
  [ESECONDQ0914] [datetime] NULL ,
  [ESECONDI0734] [int] NULL ,
  [AFIRSTC0530] [varchar](1000) NULL ,
  [AFIRSTC0003] [varchar](50) NULL ,
  [AFIRSTC0557] [varchar](100) NULL ,
  [AFIRSTQ2045] [datetime] NULL ,
  [memo_PRE] AS ( CASE WHEN ( CHARINDEX('$$$',CONVERT(VARCHAR(1000), [memo])) > 0 ) THEN 1 ELSE 0 END ) ,
  [AFIRSTQ0023] [datetime] NULL ,
  [AFIRSTC0537] [varchar](100) NULL ,
  [AFIRSTC2515] [varchar](255) NULL ,
  [ESECONDI0003] [int] NULL ,
  [WFPColor1] AS ( [dbo].[f_get](( -30 ), [AFIRSTQ2045], [OBJNAME],GETDATE()) ) ,
  [ItemCount] AS ( [dbo].[f_get_I]([objexplain]) ) ,
  CONSTRAINT [IX_WFPUSER_A0113] UNIQUE NONCLUSTERED ( [ESECONDQ0914] ASC )
  WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
  IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90 ) ON [PRIMARY]
  )
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

想着对 [Objname] 列进行修改;
执行的语句是 ALTER TABLE XXXXXX ALTER COLUMN Objname varchar(50)
提示内容是:

消息 5074,级别 16,状态 1,第 1 行
列'WFPColor1' 依赖于 列'Objname'。
消息 4922,级别 16,状态 9,第 1 行
由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN Objname 失败。




[解决办法]

SQL code
CREATE TABLE [dbo].[XXXXXX]  (  [Objid] [int] IDENTITY(1, 1)  NOT NULL ,  [Parentid] [int] NOT NULL ,  [Objname] [varchar](20) NULL ,  [Objjc] [varchar](50) NULL ,  [AFIRSTQ0001] [datetime] NULL ,  [ESECONDQ0722] [datetime] NULL ,  [ESECONDQ0914] [datetime] NULL ,  [ESECONDI0734] [int] NULL ,  [AFIRSTC0530] [varchar](1000) NULL ,  [AFIRSTC0003] [varchar](50) NULL ,  [AFIRSTC0557] [varchar](100) NULL ,  [AFIRSTQ2045] [datetime] NULL ,  [memo_PRE] AS ( CASE WHEN ( CHARINDEX('$$$',CONVERT(VARCHAR(1000), [memo])) > 0 ) THEN 1 ELSE 0 END ) ,  [AFIRSTQ0023] [datetime] NULL ,  [AFIRSTC0537] [varchar](100) NULL ,  [AFIRSTC2515] [varchar](255) NULL ,  [ESECONDI0003] [int] NULL ,  [WFPColor1] AS ( [dbo].[f_get](( -30 ), [AFIRSTQ2045], [OBJNAME],GETDATE()) ) ,  --就这里,需要先拆了,再加上.  [ItemCount] AS ( [dbo].[f_get_I]([objexplain]) ) ,  CONSTRAINT [IX_WFPUSER_A0113] UNIQUE NONCLUSTERED ( [ESECONDQ0914] ASC )  WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,  IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,  ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90 ) ON [PRIMARY]  )ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
[解决办法]
因为找个列引用了OBJNAME

[WFPColor1] AS ( [dbo].[f_get](( -30 ), [AFIRSTQ2045], [OBJNAME],GETDATE()) ) ,
需要把这一列先删除
然后在修改,然后在重建找个列
[解决办法]
因含计算列,有依赖关系,
先备份数据,然后删除-重建表试试..
[解决办法]
步骤:
SQL code
步骤:ALTER TABLE XXXXXX DROP COLUMN WFPColor1ALTER TABLE XXXXXX ALTER COLUMN Objname varchar(50)ALTER TABLE XXXXXX ALTER COLUMN Objname varchar(50)ALTER TABLE XXXXXX  ADD WFPColor1 AS ( [dbo].[f_get](( -30 ), [AFIRSTQ2045], [OBJNAME],GETDATE()) )
[解决办法]
SQL code
ALTER TABLE XXXXXX DROP COLUMN WFPColor1ALTER TABLE XXXXXX ALTER COLUMN Objname varchar(50)ALTER TABLE XXXXXX ALTER COLUMN Objname varchar(50)ALTER TABLE XXXXXX  ADD WFPColor1 AS ( [dbo].[f_get](( -30 ), [AFIRSTQ2045], [OBJNAME],GETDATE()) ) 


[解决办法]

SQL code
ALTER TABLE XXXXXX DROP COLUMN WFPColor1ALTER TABLE XXXXXX ALTER COLUMN Objname varchar(50)ALTER TABLE XXXXXX  ADD WFPColor1 AS ( [dbo].[f_get](( -30 ), [AFIRSTQ2045], [OBJNAME],GETDATE()) ) 

热点排行