作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。

我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?


当前回答

试试下面的代码:

DBCC CHECKIDENT ('settings', RESEED, 0) 

其他回答

这个答案是对投票最多的答案的一个小补充,适用于SQL Server。问题要求自动增加主键,当前答案确实添加了主键,但它没有被标记为自动增加。下面的脚本检查列是否存在,并在启用自动递增标志的情况下添加它。

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTable' AND COLUMN_NAME = 'PKColumnName')
BEGIN


ALTER TABLE dbo.YourTable
   ADD PKColumnName INT IDENTITY(1,1)

CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED

END

GO

我遇到了这个问题,但不能使用标识列(由于各种原因)。 我决定这样做:

DECLARE @id INT
SET @id = 0 
UPDATE table SET @id = id = @id + 1 

从这里借的。

ALTER TABLE table_name ADD temp_col INT IDENTITY(1,1) 
update 

创建一个具有不同名称和相同列、主键和外键关联的新表,并将其链接到代码的Insert语句中。 对于EMPLOYEE,替换为EMPLOYEES。

CREATE TABLE EMPLOYEES(

    EmpId        INT NOT NULL IDENTITY(1,1), 
    F_Name       VARCHAR(20) ,
    L_Name       VARCHAR(20) ,
    DOB          DATE ,
    DOJ          DATE ,
    PRIMARY KEY (EmpId),
    DeptId int FOREIGN KEY REFERENCES DEPARTMENT(DeptId),
    DesgId int FOREIGN KEY REFERENCES DESIGNATION(DesgId),
    AddId int FOREIGN KEY REFERENCES ADDRESS(AddId)   
) 

但是,您必须删除现有的EMPLOYEE表,或者根据您的需求进行一些调整。

通过设计器你可以设置identity (1,1) 右击TBL => design =>在部分左击(右击)=>属性=>在标识列选择#列

属性

idendtity列