作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。
我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?
作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。
我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?
当前回答
当我们在现有表中添加一个标识列时,它将自动填充,而不需要手动填充。
其他回答
创建一个具有不同名称和相同列、主键和外键关联的新表,并将其链接到代码的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表,或者根据您的需求进行一些调整。
如果这个列在你的表中已经存在,并且它是空的,你可以用这个命令更新这个列(替换id, tablename和tablekey):
UPDATE x
SET x.<Id> = x.New_Id
FROM (
SELECT <Id>, ROW_NUMBER() OVER (ORDER BY <tablekey>) AS New_Id
FROM <tablename>
) x
试试下面的代码:
DBCC CHECKIDENT ('settings', RESEED, 0)
当我们在现有表中添加一个标识列时,它将自动填充,而不需要手动填充。
不-你必须以另一种方式来做:从一开始就添加它为INT IDENTITY -当你这样做时,它将被标识值填充:
ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY
然后你可以让它成为主键
ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable
PRIMARY KEY(ID)
或者如果你更喜欢一步完成:
ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY
CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED