【问题标题】:How to remove a field from SQLServer2005 table如何从 SQL Server 2005 表中删除字段
【发布时间】:2008-10-30 17:49:32
【问题描述】:

我试过这个:

ALTER TABLE My.Table DROP MyField

得到了这个错误:

-MyField 不是约束。

-无法删除约束。查看以前的错误。

表中只有一行数据,字段是刚刚添加的。

编辑: 只是为了跟进,sql确实缺少COLUMN。 不过,现在我得到了更严重的错误:

  • 对象“some_object__somenumbers”依赖于列“MyField”
  • ALTER TABLE DROP COLUMN MyField 失败,因为一个或多个对象访问此列。

编辑:

ALTER TABLE TableName DROP Constraint ConstraintName

工作,之后我能够使用以前的代码删除该列。感谢你们俩,谢谢。

【问题讨论】:

  • 你标记了这个“mysql”,但问题是 SQLServer 2005。你能详细说明一下吗?
  • 我的错,应该是mssql,但是已经有人更新了。

标签: sql sql-server-2005


【解决方案1】:

我认为您只是缺少 COLUMN 关键字:

ALTER TABLE TableName DROP COLUMN ColumnName

您还需要确保首先删除任何依赖于 ColumnName 的约束。

您可以这样做:

ALTER TABLE TableName DROP ConstraintName

对于您拥有的每个约束。

如果您有基于列的索引,您还需要先删除这些索引。

DROP INDEX TableName.IndexName

【讨论】:

    【解决方案2】:

    Brian 解决了您原来的问题 - 对于您的新问题(对象 'some_object__somenumbers' 依赖于列 'MyField'),这意味着您有依赖性问题。诸如索引、外键引用、默认值等。要删除约束,请使用:

    ALTER TABLE TableName DROP ConstraintName
    

    另外 - 您需要先删除依赖于该列的所有约束,然后它才能让您删除该列本身。

    【讨论】:

      【解决方案3】:
      ALTER TABLE TABLE_NAME ADD COLUMN SR_NO INTEGER(10)NOT NULL;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        • 1970-01-01
        • 2010-09-17
        相关资源
        最近更新 更多