我的情况是我需要更改列的顺序/为SQL Server 2008中的现有表添加新列。
现有专栏
MemberName
MemberAddress
Member_ID(pk)
我想要这个订单
Member_ID(pk)
MemberName
MemberAddress
答案 0 :(得分:83)
我得到了相同的答案,
继续SQL Server → Tools → Options → Designers → Table and Database Designers
并取消选择Prevent saving changes that require table re-creation
2-打开表格设计视图,然后上下滚动列并保存更改。
答案 1 :(得分: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语句时,您可以命名列并按照您希望的顺序将它们返回给您。
答案 2 :(得分:7)
如果你的桌子上没有任何记录,你可以放弃,然后创建你的桌子。
如果有记录,您可以使用SQL Server Management Studio执行此操作。
只需点击您的表格>右键单击>单击“设计”,然后您可以通过拖动所需订单上的字段然后单击“保存”来排列列的顺序。
最好的问候
答案 3 :(得分:2)
在SQL中,依赖列顺序通常是一个坏主意。 SQL基于关系理论,从而无法保证顺序 - 按设计。您应该将所有列和行视为没有订单,然后更改查询以提供正确的结果:
对于列:
对于行:
希望这会有所帮助......
答案 4 :(得分:2)
我试过这个并且没有看到任何方法。
这是我的方法。
EXEC sp_rename 'Employee', 'Employee1'
- 原始表名称为Employee INSERT INTO TABLE2 SELECT * FROM TABLE1
。
- 插入员工选择姓名,公司来自Employee1 DROP table Employee1
。答案 5 :(得分:0)
将源代码管理和自动部署用于共享开发环境时,这可能是一个问题。在我工作的地方,我们在开发层上有一个非常大的样本数据库来处理(我们的生产数据的一个子集)。
最近我做了一些工作,从表中删除一列,然后在最后添加一些额外的列。然后我不得不撤消我的列删除,所以我在最后重新添加它,这意味着表和所有引用在环境中是正确的,但源控件自动部署将不再起作用,因为它抱怨表定义更改。
这里真正的问题是表+索引大约是120GB,环境只有~60GB可用,所以我需要:
a)重命名错误顺序的现有列,按正确顺序添加新列,更新数据然后删除旧列
OR
b)重命名表格,用正确的顺序创建一个新表格,从旧表格中插入新表格,然后从旧表格中删除
使用临时表的SSMS / TFS Schema比较选项不起作用,因为光盘上没有足够的空间来执行此操作。
我并不是说这是处理事情的最佳方式,或者列顺序真的很重要,只是我有一个场景,这是一个问题,我正在分享我想到的选项解决问题
答案 6 :(得分:-4)
将id列更改为第一个的SQL查询:
PendingIntent
或使用:
ALTER TABLE `student` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT FIRST;