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

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


当前回答

这在MariaDB中工作,所以我只能希望它在SQL Server中做到:删除刚刚插入的ID列,然后使用以下语法

增加表的主键

不需要另一张桌子了。这只是插入一个id列,使其成为主索引,并用顺序值填充它。如果SQL Server不这样做,我很抱歉浪费了你的时间。

其他回答

创建一个具有不同名称和相同列、主键和外键关联的新表,并将其链接到代码的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表,或者根据您的需求进行一些调整。

试着这样做(先在测试台上):

USE your_database_name
GO
WHILE (SELECT COUNT(*) FROM your_table WHERE your_id_field IS NULL) > 0
BEGIN
    SET ROWCOUNT 1
    UPDATE your_table SET your_id_field = MAX(your_id_field)+1
END
PRINT 'ALL DONE'

我根本没有测试过这个,所以要小心!

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

试试下面的代码:

DBCC CHECKIDENT ('settings', RESEED, 0) 

Alter table /**粘贴tabal的名称**/ 添加id int (1,1)

删除/**,粘贴tabal的名称**/ id在哪里

(

选择a.d id FROM /**粘贴tabal的名字/作为a 左外连接( SELECT MIN(id) as id 从/粘贴tabal的名称/ 集团 /粘贴列c1,c2 ....* * /

) as t1 
ON a.id = t1.id

在t1。id为空

)

Alter table /**粘贴tabal的名称**/ DROP列id