SQL Server —以任何方式添加列并使它成为表中的第一列? [重复]

问题描述 投票:3回答:3

我正在更改现有表以添加标识列。我可以做到的,没问题。

但是我想确保以后看到它的人会看到它添加了identity列,所以我真的想使其成为列1。我知道这与系统的操作完全无关紧要;严格供人类阅读。

有人知道这样做的方法吗?我看过Alter Table和column_definition的TSQL语法,什么也没看到。但我希望有人知道实现这一目标的方法。

FWIW,这是一次性操作(但是在许多服务器上,因此它需要自动化),因此,我不担心将来是否会消失任何“技巧”-只要现在就可以使用。我们正在使用SQL Server Express的最新版本。

谢谢您的建议。

sql sql-server alter-table identity-column
3个回答
1
投票

根据Microsoft,您只能使用SQL Server Management Studio来执行此操作。检查this


2
投票

请按照以下步骤解决:

-- First, add identity column
alter table
    mytable

add
    id int identity(1, 1) not null

-- Second, create new table from existing one with correct column order
select
    id,
    col1,
    col2

into
    newtable

from
    mytable

现在您已经newtable的列进行了重新排序。如果需要,可以删除mytable并将newtable重命名为mytable

drop table
    mytable

exec sp_rename
    'newtable', 'mytable'

1
投票

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

不一定建议这样做,因为列在数据库表中的顺序无关紧要。当使用SELECT语句时,可以命名列并按所需顺序将其返回给您。

使用对象浏览器

避免此步骤..因为ssms工具使您可以轻松进行数据管理,而在使用多列记录进行更改时,您可能最终会丢失一些数据。等。不断变化的架构..

一旦数据丢失..您将无处取回它们...发生在我身上oncw ..

© www.soinside.com 2019 - 2024. All rights reserved.