当前位置:  开发笔记 > 编程语言 > 正文

如何在不删除SQL 2008中的表的情况下更改列

如何解决《如何在不删除SQL2008中的表的情况下更改列》经验,为你挑选了3个好方法。

当我将列类型从int更改为real时,为什么SQL 2008突然想要删除我的表?据我所知,这在SQL 2005中从未发生过.任何见解都会有所帮助.



1> Johannes Rud..:

我无法相信最高的答案已经在这里待了这么久 - 这是非常危险的建议!

您可以在不丢弃表的情况下进行实际操作:

展开varchar列https://dba.stackexchange.com/questions/5211/changing-column-width

使列可以为空(但反之亦然)

使用sp_rename重命名列

如果您发现自己无法在不删除表的情况下更改列,则通常可以使用SELECT INTO 查询将数据投影到新表中,然后删除旧表(暂时禁用约束),然后重命名投影表.在这种情况下,您需要使数据库脱机以进行维护.



2> Marcos Buarq..:

在SQL Server 2008中,转到"工具">>"选项".在小窗口中,单击"Designer".取消选中"防止保存需要更改的更改..."

=====

编辑于2015年9月4日.

我很久很久以前在这里添加了这个答案,描述了我将如何解决上述问题所描述的情况.从那以后,下面的线程中的用户已经以我当时推荐的方式暴露了一些关于做事的问题.基本上,我描述的解决方案在某些情况下可能会有问题.然后,我建议您继续阅读以检查其他用户的评论,并为您选择最佳解决方案.


这不是问题的答案,而是一个调整,默默地将表格放在结构变化上,这是恕我直言,超级糟糕!
但它放弃了桌子!它不是超大表的功能方式

3> user2173353..:

这是我使用的:

-- Add new column
ALTER TABLE MyTable
ADD Description2 VARCHAR(MAX)
GO

-- Copy data to new column (probably with modifications)
Update MyTable
SET Description2 = Description
GO

-- Drop old column
ALTER TABLE MyTable
DROP COLUMN Description
GO

-- Rename new column to the original column's name.
sp_RENAME 'MyTable.Description2' , 'Description', 'COLUMN'
GO

    将数据复制到新列.

    放下旧栏目.

    将新列重命名为旧列的名称.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有