Piemērs, kurā tiek izveidota tabula ar divām kolonnām, kurām viena ir Identity un arī primārā atslēga, kā arī aizpilde ar 3 rindām:
create table dbo.IdentPiemeraTabLai panāktu, ka var mainīt identity kolonnu:
(
AtslegaID int identity(1,1) primary key,
Teksts nvarchar(50)
)
Go
insert into dbo.IdentPiemeraTab (teksts) values ('pirma rinda')
insert into dbo.IdentPiemeraTab (teksts) values ('otra rinda')
insert into dbo.IdentPiemeraTab (teksts) values ('tresa rinda')
SET IDENTITY_INSERT dbo.IdentPiemeraTab ONLai pēc datu dzēšanas varētu atkal ievietot datus, bet Identity kolonna sāktu skaitītāju ar „1” (dati tiek dzēsti un ievietojot nākamo rindu tā būs pirmā, identity kolonnā būs vērtība „1”. Ja tikai dzēstu datus un ievietotu jaunu rindu, vērtība būtu „8”):
insert into dbo.IdentPiemeraTab (atslegaID, teksts) values (6, '6 rinda')
insert into dbo.IdentPiemeraTab (atslegaID, teksts) values (7, '7 rinda')
SET IDENTITY_INSERT dbo.IdentPiemeraTab OFF
delete dbo.IdentPiemeraTabUn satīram pēc sevis:
DBCC CheckIdent (IdentPiemeraTab, RESEED, 0)
drop table dbo.IdentPiemeraTab
AFAIK ir nepatīkams ierobežojums, ka vienlaicīgi tikai vienai tabulai var likt iekšā ierakstus, kurām ir identity atribūts, t.i., ja vajag divām tabulām to, tad vispirms pirmajai ON, tad pirmajā insert, tad pirmajai OFF, tad otrajai ON, tad otrajā insert, un tad otrajai OFF. Ja tas notiek ciklā (kas, protams, pati par sevi ir ne pārāk konstrukcija), tad kods sanāk pabriesmīgs.
AtbildētDzēst