虽然这似乎是一个非常天真的问题,但我想知道我可以添加一个具有我刚删除的相同ID的行的方式。
让我更清楚:假设我有一个名为Employee的表。架构如下:
CREATE TABLE dbo.Employee
(EmployeeID int PRIMARY KEY,
EmployeeName varchar(255) not null,
Designation varchar(255),
Salary int);
假设我从我的应用程序中添加了一行包含以下值的行:
EmployeeID -> 12
EmployeeName -> 'Lewis Montford'
Designation -> 'Accounts Officer'
Salary -> 8000
现在我刚从我的应用程序对此记录执行了'删除'操作。我想添加一条新记录,当然是从我的应用程序,但具有相同的ID。像这样:
EmployeeID -> 12
EmployeeName -> 'Amanda Gresham'
Designation -> 'Senior Project Manager'
Salary -> 15000
我无法实现这一点,因为每当我尝试添加新条目时,'EmployeeID'会自动设置为13,而不是12。
我想知道为什么我不能添加一个“EmployeeID”设置为12的新条目,以及我可以通过哪些方式实现这一目标。
我的数据库服务器是SQL Server 2012,我要提到的一件重要事情是'EmployeeID'是'Identity','Identity Increment'设置为1,'Identity Seed'设置为1,它是此表的主键,它是在我的应用程序中自动生成的。
我用来插入数据的应用程序是用C#编写的。
答案 0 :(得分:5)
你为什么要这样做?我没有看到任何理由......
至于您的问题,您需要将IDENTITY_INSERT设置为ON
才能明确指定ID。
SET IDENTITY_INSERT dbo.Employee ON
INSERT INTO dbo.Employee (EmployeeID , EmployeeName ,Designation ,Salary )
VALUES (12, 'Amanda Gresham','Senior Project Manager',15000)
SET IDENTITY_INSERT dbo.Employee OFF
这是sqlfiddle显示它的实际效果