更改SQL Server 2008中现有表的列顺序/添加新列

rmd*_*ssa 5 sql-server

我有这样的情况,我需要更改列的顺序/为SQL Server 2008中的现有表添加新列.它不允许我没有删除和重新创建.但那是在生产系统中并且在该表中有数据.我可以备份数据,删除现有表并更改顺序/添加新列并重新创建它,将备份数据插入新表中.

有没有最好的方法来做到这一点,而不是删除和重新创建.我认为SQL Server 2005将允许此过程,而不会在更改为现有表结构时删除和重新创建.

谢谢

mar*_*c_s 9

您无法真正更改SQL Server 2008表中的列顺序 - 它在很大程度上也无关紧要(至少在关系模型中应该如此).

使用SQL Server Management Studio中的可视化设计器,只要进行了太大的更改,为SSMS执行此操作的唯一可靠方法是以新格式重新创建表,复制数据,然后删除旧桌子.你真的无法改变它.

可以随时执行的操作是使用SQL DDL语句向表中添加新列或从表中删除现有列:

ALTER TABLE dbo.YourTable
    ADD NewColumn INT NOT NULL ........

ALTER TABLE dbo.YourTable
    DROP COLUMN OldColumn
Run Code Online (Sandbox Code Playgroud)

这样可行,但您无法影响列顺序.但同样重要的是:对于正常的操作,表格中的列顺序完全无关紧要 - 在打印输出或图表上最多只是一个装饰问题.....所以为什么你如此关注特定的列顺序?

  • @rmdussa我从不让客户对表有任何权限.我通常不会将表定义视为我的数据库提供的服务定义的一部分.因此,我可以自由更改,并且我不必为了演示目的而承诺任何特定的表设计.视图,表值函数,存储过程等是我的数据库通常公开的接口. (3认同)

tva*_*son 2

一种可能性是不必费心对表中的列进行重新排序,而只需通过添加列来对其进行修改。然后,创建一个视图,其中的列按照您想要的顺序排列——假设顺序确实很重要。可以轻松更改视图以反映您想要的任何顺序。由于我无法想象顺序对于编程应用程序来说很重要,因此该视图应该足以满足那些可能很重要的手动查询。