我正在修改现有表以添加标识列。我能做到,没问题。
但是我想确定将来会看到它的人会看到它添加了标识栏,所以我真的想把它列为第1列。我知道这对于它来说是完全无关紧要的。系统的运作;它严格用于人类阅读。
有谁知道这样做的方法?我已经查看了Alter Table和column_definition的TSQL语法,但没有看到任何内容;但我希望有人知道如何实现这一目标。
FWIW,这是一次性操作(但在许多服务器上,所以它需要自动化),所以我不担心是否有任何"技巧"可能会在将来消失 - 只要它现在有效。我们正在使用最新版本的SQL Server Express。
感谢您的任何建议。
答案 0 :(得分:1)
根据Microsoft的说法,您只能使用SQL Server Management Studio执行此操作。 查看this
答案 1 :(得分:1)
使用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
语句时,您可以命名列并按照您希望的顺序将它们返回给您。
使用对象探索
避免这一步..因为ssms工具让你做轻量级数据管理,而在进行多列记录的更改时,你最终可能会丢失一些数据..等等。因为你的处理器有多快它总会挂起改变建筑..
一旦数据丢失......你将无法将它们带回去......发生在我身上......
答案 2 :(得分:1)
按照以下步骤解决此问题:
-- 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
:
exec sp_rename
'newtable', 'mytable'