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