如何在SQL Server 2012中删除表的列?

3

我希望能在SQL Server 2012中删除表中的某一列,但不影响表中的其他列及其数据。

我该如何做?这种操作是否可能?

目前,我尝试通过SQL Server Management Studio删除列,但是系统提示必须删除整个表并重新创建。


1
修改表结构(ALTER TABLE) - Oded
1
为什么需要关闭它呢?答案可能很简单,但这是否意味着问题没有意义呢?考虑到 SQL Server Management Studio 拒绝执行此操作,这并不是那么琐碎的问题。 - aknuds1
1
你知道微软在他们的MSDN网站上发布了一份名为SQL Server Books Online的广泛在线文档吗?它是供所有人咨询的,而且完全免费。 - marc_s
3个回答

13

来自MSDN的最初回答:

使用上述代码可以从dbo.Table表中删除column_b列。


谢谢,这个很好用。不知道为什么管理工作室拒绝做同样的事情。 - aknuds1
1
@aknuds1:你是否遇到过类似于“不允许,因为此操作将需要表重建”的消息?这是 SSMS 中的一个选项 - 请参阅此处的截图以了解如何关闭它 (在 “工具 > 选项” 下)。 - marc_s
@marc_s 看起来差不多正确。这是否意味着 SSMS 会删除表并重新创建它?在 SQL 中删除列并没有任何影响,因为剩余的列及其数据没有受到影响。 - aknuds1
1
@aknuds1:是的,SSMS中的可视化设计器通过重新创建表并复制数据来执行许多操作-尽管实际的T-SQL并不需要这样做。 - marc_s
@marc_s 这是说在重新创建表时数据会被恢复吗? - aknuds1
1
@aknuds1:是的- SSMS会(1)将现有表重命名为临时名称,(2)使用所需的布局创建新表,并(3)将所有未删除的列数据复制回去。 - marc_s

1
ALTER TABLE table_name
DROP COLUMN column_name

1
删除列
alter table tblname drop column colname

添加列

alter table tblname add colname datatype

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接