如何更改SQL Server 2008中的现有表的列顺序

Ama*_*man 47 sql-server

我有情况需要更改列的顺序/为SQL Server 2008中的现有表添加新列.

现有专栏

MemberName
MemberAddress
Member_ID(pk)
Run Code Online (Sandbox Code Playgroud)

我想要这个订单

Member_ID(pk)
MemberName
MemberAddress
Run Code Online (Sandbox Code Playgroud)

Ama*_*man 90

我得到了相同的答案,继续SQL Server ? Tools ? Options ? Designers ? Table and Database Designers并取消选择Prevent saving changes that require table re-creation

在此输入图像描述

2-打开表格设计视图,向上和向下滚动列并保存更改.

在此输入图像描述

  • 只是想提一下,生成的SQL Server脚本将创建临时表,使`INSERT INTO`并删除临时表.这是你所期望的,并不是真的想手动编写脚本. (2认同)
  • 如果表有数据,您可能还需要增加超时. (2认同)
  • @ f470071 不,当我使用它时,我没有丢失任何数据。请在测试台上试用然后使用。但是更改此选项后的最佳做法是选中上方的选项[自动生成更改脚本](http://www.dirkstrauss.com/easily-generate-table-change-scripts) 以防止数据丢失 (2认同)

Ven*_*nki 12

使用ALTER语句是不可能的.如果您希望按特定顺序排列列,则必须创建一个新表,使用INSERT INTO newtable(col-x,col-a,col-b)SELECT col-x,col-a,col-b FROM oldtable将数据从oldtable传输到newtable,删除oldtable并将newtable重命名为oldtable名称.

这不一定是推荐的,因为列在数据库表中的顺序无关紧要.使用SELECT语句时,可以命名列并按照所需顺序将它们返回给您.

  • 您可以使用语句`insert into <table_name1> select*from <table_name2>`来控制两个表的字段列表相同.在这种情况下,列是重要的. (2认同)

Biz*_*pps 7

如果您的表没有任何记录,您可以删除然后创建您的表.

如果它有记录,您可以使用SQL Server Management Studio执行此操作.

只需单击表格>右键单击>单击设计,然后您可以通过拖动所需订单上的字段然后单击保存来排列列的顺序.

最好的祝福