Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 删除MS SQL Server中的列_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server 删除MS SQL Server中的列

Sql server 删除MS SQL Server中的列,sql-server,sql-server-2005,Sql Server,Sql Server 2005,如何从现有表中删除列?更改表XXX删除列YYY您要查找的命令是: alter table tblName drop column columnName 其中,tblName是表的名称,columnName是列的名称,但您可能需要先做几件事 如果该列有任何外键引用,则需要首先清除它们 如果有索引使用该列,则需要将其删除或调整为不使用该列 请记住,此命令的性能不一定很好。一种选择是等待一段停机时间,确定没有人访问数据库,重命名当前表,然后使用create table和insert-in。。。

如何从现有表中删除列?

更改表XXX删除列YYY

您要查找的命令是:

alter table tblName drop column columnName
其中,
tblName
是表的名称,
columnName
是列的名称,但您可能需要先做几件事

  • 如果该列有任何外键引用,则需要首先清除它们
  • 如果有索引使用该列,则需要将其删除或调整为不使用该列

请记住,此命令的性能不一定很好。一种选择是等待一段停机时间,确定没有人访问数据库,重命名当前表,然后使用
create table
insert-in。。。从
中选择以传输不希望删除的列

Oracle的一个较新版本实际上有一个软删除功能,它可以只将列标记为未使用,而不将其物理删除。它具有相同的效果,因为您不能再引用它,并且有一个命令沿着
altertable。。。删除未使用的列
,这意味着要在静默时间运行,这需要实际删除它


这样做的好处是,在繁忙时间可以立即“消失”列,而不会降低数据库性能。

对于大型表,这样做可能会非常慢。创建一个新表,一个旧表的副本,但是要进行更改,并插入数据,通常要快得多。删除旧表,然后重命名新表

这也可以通过SSMS GUI完成

我喜欢这种方法,因为它会警告您该列上是否存在任何关系,还可以自动删除这些关系。正如PaxDiablo所说,如果存在关系,必须首先删除它们

  • 在设计视图中放置表格(右键单击表格),如下所示:
  • 在表的设计视图中的列上单击鼠标右键,然后单击“删除” “专栏”

  • 此时,如果有任何关系也需要删除,它会询问您是否也要删除这些关系

    可能重复事实上,另一个问题是在这个问题之后两年写的,所以这将是重复的。尽管另一个问题是在这个问题之后写的,但它得到了更多的意见和投票。必须是一个更谷歌友好的标题或东西。因此,我投票结束了这个问题。在我删除了这些列之后,我必须右键单击“设计”画布,然后选择
    生成更改脚本
    。然后我运行了删除列的脚本。在运行该脚本之前,列没有被删除。@jeppoo1 OOC删除列后是否单击了“保存”按钮?我没有,我想知道为什么我没有想到。。。现在我知道我可以用CTRL+S保存它了!谢谢
    ALTER TABLE [Intake].[MER_SF_Opportunity_History] DROP COLUMN [[IntakeIsDeleted]]]
    GO