我有一个包含 500 条记录的表,并且想要插入新列作为从 1 开始的“序列号”。
问问题
6814 次
3 回答
3
如果您关心分配标识值的顺序,最好这样做:
CREATE TABLE dbo.NewTable
(
SerialNumber INT IDENTITY(1,1),
... other columns from original table ...
);
INSERT dbo.NewTable(...other columns...)
SELECT ...other columns...
FROM dbo.OriginalTable
ORDER BY ...ordering criteria...
OPTION (MAXDOP 1); -- to prevent parallelism from messing with identity
DROP TABLE dbo.OriginalTable;
EXEC sp_rename N'dbo.NewTable', N'OriginalTable', N'OBJECT';
您可能必须处理约束等,并且您将希望在事务中执行此操作。关键是只需向表中添加一个标识列,并以任意顺序分配标识值。如果您不关心如何为现有值分配序列号,那么只需使用凯尔的答案。
于 2013-04-06T12:27:31.653 回答
2
这可以通过以下方式实现:
alter table YourTable
add SrNo int identity(1,1)
于 2013-04-06T11:59:24.267 回答
-1
在 PostgreSQL 中只是做:
ALTER TABLE ttaabbllee ADD COLUMN columnName serial NOT NULL;
完成!..
于 2013-06-27T16:35:35.070 回答