【发布时间】:2009-04-16 10:34:22
【问题描述】:
如何从现有表中删除列?
【问题讨论】:
-
实际上,另一个问题是在这个问题 2 年后写的,所以这将是重复的。
-
虽然另一个问题是在这个问题之后写的,但它获得了更多的观点和投票。必须是一个对谷歌更友好的标题或其他东西。因此,我投票结束了这个问题。
标签: sql-server sql-server-2005
如何从现有表中删除列?
【问题讨论】:
标签: sql-server sql-server-2005
您要查找的命令是:
alter table tblName drop column columnName
其中tblName 是表的名称,columnName 是列的名称,但您可能需要先做一些事情。
请记住,此命令的性能不一定很好。一种选择是等待一段停机时间,您可以确定没有人会访问数据库,重命名当前表,然后使用create table 和insert into ... select from 传输您不想删除的列。
Oracle 的较晚版本之一实际上具有软删除功能,它可以将列标记为未使用,而无需物理删除它。它具有相同的效果,因为您无法再引用它,并且有一个类似于 alter table ... drop unused columns 的命令,该命令旨在在安静的时间内运行,它实际上是在物理上删除它的艰苦工作。
这样做的好处是可以立即“消失”列,而不会在繁忙时间拖累数据库性能。
【讨论】:
ALTER TABLE XXX DROP COLUMN YYY;
【讨论】:
【讨论】:
Generate Change Script。然后我运行了删除列的脚本。在运行该脚本之前未删除列。
对于大型表,这可能会非常缓慢。创建一个新表(旧表的副本但有更改)并插入数据通常会快得多。删除旧表,然后重命名新表。
【讨论】:
ALTER TABLE [Intake].[MER_SF_Opportunity_History] DROP COLUMN [[IntakeIsDeleted]]]
GO
【讨论】: