我有一张表Employees
:
EmpId int not null
EmpName nvarchar
但是,此表由其他表通过外键引用,即EmpId
是其他表中的外键。
此代码无效:
USE MyDatabase
ALTER TABLE [MyDatabase].[EmployeesSchema].[Employees]
DROP CONSTRAINT PK_Employees
ALTER TABLE [MyDatabase].[EmployeesSchema].[Employees]
DROP COLUMN EmpId
ALTER TABLE [MyDatabase].[EmployeesSchema].[Employees]
ADD TempColumn INT IDENTITY(1,1)
ALTER TABLE [MyDatabase].[EmployeesSchema].[Employees]
ADD CONSTRAINT PK_Employees PRIMARY KEY (TempColumn)
GO
sp_RENAME '[MyDatabase].[EmployeesSchema].[Employees].TempColumn', 'EmpId' , 'COLUMN'
GO
它产生:
约束' PK_Employees'表'客户'正在引用, 外键约束' Employees_Clients_FK'。
即使我有外键约束,如何将EmpId
更改为自动递增?
答案 0 :(得分:0)
如果你可以保留所有以前的id值,你可以:
选择 MAX(EMPID) 来自员工
然后将员工empid更新为IsIdentity = Yes 和IdentitySeed =“最大ID查询的结果”
因此,之后的所有新条目都将具有一个自动生成的列,该列从最高EmpId值开始。这样任何新值都不会与之前的值发生冲突。