作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。
我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?
作为标题,我有一个已经填充了150000条记录的现有表。我添加了一个Id列(目前为空)。
我假设我可以运行一个查询,用增量数字填充这个列,然后设置为主键并打开自动增量。这是正确的做法吗?如果是,我怎么填入初始数字?
当前回答
当我们在现有表中添加一个标识列时,它将自动填充,而不需要手动填充。
其他回答
通过设计器你可以设置identity (1,1) 右击TBL => design =>在部分左击(右击)=>属性=>在标识列选择#列
属性
idendtity列
这个答案是对投票最多的答案的一个小补充,适用于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
试试下面的代码:
DBCC CHECKIDENT ('settings', RESEED, 0)
这在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表,或者根据您的需求进行一些调整。