2014-12-04 4 views
-3

Предположим, что есть таблица, содержащая записи учащихся из рулона № 1 по 10. Если мы удалим запись с номером рулона 4 & 5. Возможно ли ввести новые записи по адресу 4 & 5? Кто-нибудь может помочь.Пользовательское значение для столбца идентичности

+1

Если указан номер рулона в 'INSERT' запроса, он будет использовать его , – Barmar

+1

Зависит от схемы таблицы и, возможно, разрешений, которые выполняет пользователь, выполняющий код (возможно, должен быть установлен IDENTITY_INSERT) –

+1

@Barmar: Не обязательно. Если, например, столбец для номера рулона также является столбцом идентификации, а параметр «IDENTITY_INSERT» отключен, вы не можете вставлять записи с определенными номерами рулонов (4, 5). Как говорит Роуленд Шоу, это зависит от схемы. – stakx

ответ

0

Да, вы можете это сделать, используя SET IDENTITY_INSERT, учитывая, что для столбца StudentRollID указан IDENTITY(1, 1). Это означает, что каждая строка вставляется в таблицу, SQL Server будет автоматически увеличивать это значение на 1, начиная с номером 1.

-- 1 - Retrieve all of the data 
-- from the dbo.Student table 
SELECT * 
FROM dbo.Student; 
GO 

-- 2 - Delete a single record 
DELETE 
FROM dbo.Student 
WHERE StudentRollID = 4; 
GO 

-- 3 - Verify the record was deleted 
SELECT * 
FROM dbo.Student; 
GO 

-- 4 - Insert the deleted record 
-- Insert fails 
INSERT INTO [dbo].[Student] 
([StudentRollID] 
,[FirstName] 
,[LastName] 
,[CreateDate]) 
VALUES 
(4 
,'Bar' 
,'Foo' 
,'2014-12-04'); 
GO 

-- 5 - Insert the deleted record 
-- Insert succeeds 
SET IDENTITY_INSERT [dbo].[Student] ON 
INSERT INTO [dbo].[Student] 
([StudentRollID] 
,[FirstName] 
,[LastName] 
,[CreateDate]) 
VALUES 
(4 
,'Bar' 
,'Foo' 
,'2014-12-04'); 
SET IDENTITY_INSERT [dbo].[Student] OFF 
GO 

-- 6 - Verify the data 
SELECT * 
FROM dbo.Student; 
GO 
Смежные вопросы