我在一个原有的数据表中插入一个新列,并对其设定默认值,语句如下
if exists(select * From syscolumns a left join sysobjects b on a.ID=b.id where a.Name='iManageCode' and b.name='o_BBSRecord')
alter table o_BBSRecord drop column iManageCode
GO
alter table o_BBSRecord add iManageCode Int
ALTER TABLE [dbo].[o_BBSRecord] WITH NOCHECK ADD
CONSTRAINT [DF_o_BBSRecord_iManageCode] DEFAULT (0) FOR [iManageCode]
GO
但是如果重复执行此语句,会报错:
服务器: 消息 5074,级别 16,状态 1,行 2
对象 'DF_o_BBSRecord_iManageCode' 依赖于 列 'iManageCode'。
服务器: 消息 4922,级别 16,状态 1,行 2
ALTER TABLE DROP COLUMN iManageCode 失败,因为有一个或多个对象访问此列。
服务器: 消息 2705,级别 16,状态 4,行 1
各表中的列名必须唯一。在表 'o_BBSRecord' 中多次指定了列名 'iManageCode'。
但是如果去掉为该列设定默认值的那两天语句,则没问题,我想请问一下,难道是因为设定了默认值,则不可对此列进行Drop 吗?
请大家帮忙,问题解决即结贴