添加一个新列并定义其在表格中的位置

Amm*_*arR 7 sql-server-2008 database-design t-sql alter-table

我有 5 列的表 A:

TableA
--
Name
Tel
Email
Address
Run Code Online (Sandbox Code Playgroud)

我想在电话和电子邮件之间添加一个新列(移动):

TableA
--
Name
Tel
Mobile
Email
Address
Run Code Online (Sandbox Code Playgroud)

如果我使用

ALTER TABLE TableA
ADD COLUMN Mobile INT NOT NULL
Run Code Online (Sandbox Code Playgroud)

移动列被添加到表的末尾。

有没有办法在不删除表并将数据移动到新表的情况下实现这一目标?

Mar*_*ith 17

不。重建表是唯一的方法。请参阅此连接项目进行确认

如果您信任有点错误的表设计器,您可以使用 SSMS 为您编写脚本。

除此之外,您可以声明一个具有所需列顺序的视图,作为将逻辑相关的列组合在一起的一种方式。

  • @AmmarR - 唯一的新东西是,现在你会收到一条警告消息,然后它才刚刚删除并在幕后默默地重新创建表。2000 也没有语法来做到这一点。您可以禁用该选项以防止保存会删除并重新创建表的更改,但我绝对不会在上述情况下打扰,除非您可以在维护窗口中执行此操作。您还应该意识到设计器有一些错误(例如,在重新创建表时丢失了列上的“FILESTREAM”),因此只需使用它来编写更改脚本,然后对其进行完整性检查。 (9认同)