sql >> Database >  >> RDS >> Sqlserver

Hoe de identiteitskolomwaarde in de SQL Server-tabel opnieuw in te stellen - SQL Server / T-SQL-zelfstudiedeel 43


Laten we eerst beginnen met het begrijpen van de identiteitseigenschap en dan kunnen we doorgaan naar de stap, hoe kunnen we deze resetten? Maak een SQL Server-tabel met identiteitskolom met behulp van onderstaand script

USE TEST
GO
CREATE TABLE dbo.Person( ID INT IDENTITY(1,1), Name VARCHAR(10))

Laten we onderstaande records invoegen met behulp van onderstaande instructies
INSERT INTO dbo.Person(name) 
VALUES ('Aamir')
INSERT INTO dbo.Person(Name)
VALUES ('Aamir Shahzad')
 
 Er wordt slechts één record ingevoegd en het tweede record mislukt omdat de tekenreeks groter is dan de grootte van het kolomgegevenstype Fig 1-records invoegen in SQL Server-tabel

Controleer de identiteit Waarde van een kolom: Om de identiteitswaarde van een kolom te controleren, kunnen we onderstaande instructie
--Check the Identity Value of a Column
gebruiken
DBCC CHECKIDENT ('dbo.Person');
 
Fig 2- DBCC CHECKIDENT to see the Identity Value


Zelfs het invoegen is mislukt voor het tweede record, maar de identiteitswaarde wordt verhoogd. Als we het volgende record invoegen, zal de identiteitswaarde daarvoor 3 zijn, zoals we kunnen zien in figuur 3.

Hier zijn enkele manieren om de identiteitswaarde van een kolom opnieuw in te stellen na het verwijderen data.

Identiteitswaarde resetten met TRUNCATE: Als we alles uit de tabel willen verwijderen en de tabel heeft geen externe sleutelrelatie, kunnen we de tabel inkorten en dat zal de gegevens opschonen en ook de identiteitswaarde instellen Fig 3-Gebruik Truncate om de tabel op te schonen en identiteitswaarde opnieuw in te stellen


Identiteitswaarde resetten door DBCC CHECKIDENT te gebruiken: Als de tabel een relatie heeft met een andere tabelrelatie (Primary-Foreign Key), kunnen we de tabel niet afkappen. In dat geval moeten we de waarden uit de tabel verwijderen met de instructie Delete en vervolgens de identiteitswaarde instellen.
DBCC CHECKIDENT ('dbo.Person', RESEED, 0);
  Fig 4. Verwijder gegevens uit de tabel en gebruik DBCC CHECKIDENT om de identiteitswaarde opnieuw te plaatsen

Videodemo:Hoe de identiteitskolomwaarde in de SQL Server-tabel opnieuw in te stellen

  1. GreenDAO ondersteunt meerdere relaties tussen tabellen

  2. SQL Oracle LEFT JOIN en SUBQUERY-fout:ORA-00905:ontbrekend trefwoord

  3. Meer transactielogvet bijsnijden

  4. Hoe kopieer ik een set gegevens diep en verander ik FK-referenties om naar alle kopieën te verwijzen?