如何添加刚刚在数据库表中删除的ID

时间:2014-03-19 07:21:49

标签: c# sql sql-server-2012

虽然这似乎是一个非常天真的问题,但我想知道我可以添加一个具有我刚删除的相同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#编写的。

1 个答案:

答案 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显示它的实际效果