2

我有一个包含 500 条记录的表,并且想要插入新列作为从 1 开始的“序列号”。

4

3 回答 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 回答