Løst: identitetsindsættelse på sql-server

Sidste ændring: 09/13/2023

Identity Insert er en SQL Server-attribut, der bruges, når du vil indsætte eksplicitte værdier i identitetskolonnen i en tabel. I SQL Server kan du som standard ikke indsætte din egen værdi i identitetskolonnen. Men under visse omstændigheder vil du indsætte dine egne værdier i identitetskolonnen, og det er her, Identity Insert kommer ind.

Indsæt identitet giver dig mulighed for at gøre dette. Før vi forstår, hvordan man bruger Identity Insert, lad os først forstå, hvad en identitetskolonne er.

CREATE TABLE Employee
(
    ID int IDENTITY(1,1),
    Name varchar(255),
    Salary decimal
)

Her er ID en identitetskolonne. Når du indsætter en ny post, øger SQL Server automatisk ID'et.

Problemet

Antag, at du migrerer data fra en gammel database. I den gamle database var der vedligeholdt ID'er. Du har også en lignende struktur i den nye database. Nu, mens du migrerer, vil du gerne beholde de samme gamle ID'er. Men SQL Server tillader det ikke som standard, fordi ID er identitetskolonnen.

Løsningen på problemet

Det er her, du kan bruge Identity Insert. Her er en trin-for-trin guide til, hvordan du bruger den.

Trin til brug af Identity Insert

Først skal du indstille Identity Insert TIL for den specifikke tabel som vist nedenfor:

SET IDENTITY_INSERT Employee ON

Når du har slået det TIL, kan du indsætte dine egne værdier i identitetskolonnen.

Indsæt nu dine egne værdier.

INSERT INTO Employee(ID, Name, Salary)
VALUES(1, 'John', 50000)

Derefter skal du indstille Identity Insert FRA for den tabel som vist nedenfor:

SET IDENTITY_INSERT Employee OFF

Funktioner involveret

SET IDENTITY_INSERT er en funktion i SQL Server, der bruges til at indsætte eksplicitte værdier i identitetskolonnen.

En hurtig advarsel: Vær venlig at håndtere denne funktion med omhu, fordi den kan bryde sekvensens identitet, og derfor bør den bruges med omtanke.

Lignende biblioteker

Mens SQL Server bruger IDENTITY_INSERT til at administrere identitetskolonner, har forskellige DBMS'er deres lignende koncept. For eksempel tillader MySQL AUTO_INCREMENT-attributten også at indstille et auto-increment-felt i en database. Oracles tilsvarende funktionalitet leveres af en kombination af sekvenser og triggere.

Identity Insert er en kraftfuld funktion leveret af SQL Server. Det er meget nyttigt, når du udfører opgaver såsom datamigrering eller kopiering af data fra en database til en anden. Det skal dog bruges med omhu for at undgå misbrug og fejl i dataintegriteten. Fortsæt med at udforske og kode!

Relaterede indlæg: