Czy istnieje możliwość wpisania w sposób jawny wartości do kolumny IDENTITY? Jesli tak to w jaki sposób?


Istnieje możliwość wpisania wartości w sposób jawny do kolumny z ustawioną własnością IDENTITY. By to zrobić, przed poleceniem INSERT należy ustawić następującą właściwość:
SET IDENTITY_INSERT dbo.TableName ON;

Tryb ten wyłączamy poleceniem:

SET IDENTITY_INSERT dbo.TableName OFF;

Jako przykład posłuzy nam prosta tabela z dwoma kolumnami

CREATE table Car (
	Id	INT IDENTITY (1,1),
	Name NVARCHAR(15)
)
/*	kolumna Id oznaczona jako IDENTITY
	wartośc początkowa 1 (pierwszy parametr)
	wzrost też co 1 (drugi parametr) */

Kod z objaśnieniami poniżej

INSERT INTO Car (Id, Name)
VALUES (1,1);
/* Zwrócony bład podczas wykonywania:
Cannot insert explicit value for identity column in table 'Car' when IDENTITY_INSERT is set to OFF. */

-- włączamy mozliwość wpisywania wartości w sposób jawny do Car.Id
SET IDENTITY_INSERT Car ON; 

INSERT INTO Car (Id, Name)
VALUES 	(1,1);

/* OPERACJA INSERT ZAKOŃCZONA POPRAWNIE
(1 row affected) */

-- wyłączamy możliwość wpisywanie wartości w sposób jawny
SET IDENTITY_INSERT Car OFF; 

© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci