Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          作者: sealyu   日期:2008-04-17
          在SQL Server 中,如果給表的一個(gè)字段設(shè)置了默認(rèn)值,就會在系統(tǒng)表sysobjects中生成一個(gè)默認(rèn)約束。
          如果想刪除這個(gè)設(shè)置了默認(rèn)值的字段(假設(shè)此字段名column1),
          執(zhí)行“ALTER TABLE table1 DROP COLUMN column1”時(shí)就會報(bào)錯(cuò):
          The object 'DF__xxxxxxxxxxx' is dependent on column 'column1'.
          ALTER TABLE DROP COLUMN column1failed because one or more objects access this column.

          所以在刪除此字段時(shí)需要先將系統(tǒng)表中的對應(yīng)默認(rèn)約束刪除, 可以使用下面的腳本進(jìn)行刪除:
          -- this script drops the default constraint which is generated by the setting of default value.
          DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)
          SET @tablename='CountryGroupEmailAndWaitAux'
          SET @columnname='actionOfHasNoValidEmail'

          declare @defname varchar(100)
          declare @cmd varchar(100)

          select @defname = name
          FROM sysobjects so
          JOIN sysconstraints sc
          ON so.id = sc.constid
          WHERE object_name(so.parent_obj) = @tablename
          AND so.xtype = 'D'
          AND sc.colid =
          (SELECT colid FROM syscolumns
          WHERE id = object_id(@tablename) AND
          name = @columnname)

          select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname
          if @cmd is null print 'No default constraint to drop'
          exec (@cmd)

          在刪除對應(yīng)的默認(rèn)約束后,執(zhí)行:
          ALTER TABLE table1 DROP COLUMN column1
          即可刪除字段。
          posted on 2008-04-17 14:31 seal 閱讀(1998) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
          主站蜘蛛池模板: 于都县| 宝清县| 昌平区| 瑞金市| 兰溪市| 荃湾区| 松溪县| 百色市| 彩票| 久治县| 武邑县| 阜阳市| 佳木斯市| 衡东县| 抚州市| 北票市| 海门市| 新宾| 务川| 株洲县| 卢湾区| 荥经县| 赫章县| 栖霞市| 临汾市| 忻城县| 九台市| 楚雄市| 龙岩市| 五华县| 神池县| 巴青县| 嘉兴市| 库车县| 陵川县| 庆安县| 潜山县| 泰兴市| 伊春市| 赤城县| 云霄县|