【问题标题】:DROP all columns from an existing SQL Server table从现有 SQL Server 表中删除所有列
【发布时间】:2020-04-17 04:12:52
【问题描述】:

我需要删除 SQL Server 中现有表中的所有列。可以通过指定每个列名来删除列。我想删除每一列而不指定列名。我正在寻找类似的东西

ALTER TABLE tblUser DROP COLUMN *;

有没有已知的方法可以做到这一点?

【问题讨论】:

  • 您为什么要这样做?如果您只想删除整个表格,请使用DROP TABLE tablename
  • 删除该表并创建新表
  • 没有列,表只是一个名称。如果要删除所有列,可以考虑使用 DROP TABLE tablename 删除整个表
  • 指定所有要删除的列名。这可以通过“动态 SQL”以编程方式完成,包括从外部语言生成。删除表本身的含义略有不同。
  • 我认为 SQL Server 甚至不允许没有列的表。

标签: sql-server ddl


【解决方案1】:

从字面上回答你的问题,不,你不能。如果您尝试删除最后一列,SQL Server 将抛出以下错误:

消息 4923,第 16 级,状态 1,第 12 行

ALTER TABLE DROP COLUMN 失败,因为“Id”是表“NoColumns”中的唯一数据列。 一张表必须至少有一个数据列。

因此,如果你真的想解决你的问题,不管它是什么,最好说出最初的问题,而不是你决定追求的解决方案。

【讨论】:

    【解决方案2】:

    除了删除所有列,您可以删除表格

    DROP TABLE TABLENAME
    

    或者您可以在 Alter 查询中提及所有列名

    ALETR TABLE TableName DROP COLUMN Column1, Column2, Column3....ColumnN
    

    【讨论】:

    • 嗨,感谢 cmets,在我的情况下,列是动态的,我必须在将第一组列放到同一个表后立即使用不同数量的列进行另一次插入。我尝试删除表并插入它,但它会引发与批处理相关的错误,我的问题是我也需要留在同一个批处理中,所以 GO 语句也没有用。有什么办法让我们保持在同一批中并做一个drop table tblUser; INSERT INTO tblUser select * from anotherTable
    • @NewDeveloper 然后首先使用ALTER TABLE添加所有列并删除所有旧列
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    相关资源
    最近更新 更多