sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är omfattningen av SET IDENTITY_INSERT xyz ON?

Det är ett sessionsalternativ som ett bord bara kan ha alternativet på för ett bord åt gången, men flera olika sessioner kan ha det på för samma bord (inte säker på att det någonsin skulle vara en bra idé dock!)

När en underordnad batch är klar (som ställer in det här alternativet) ser det ut som att den automatiskt kopplas ur för anslutningen.

CREATE TABLE Tst
(C INT IDENTITY(1,1))

EXEC('SET IDENTITY_INSERT Tst ON')
INSERT INTO Tst(C) VALUES (1) /*Fails - Complains IDENTITY_INSERT is off*/

SET IDENTITY_INSERT Tst ON
EXEC('INSERT INTO Tst(C) VALUES (1)') /*Succeeds this way round*/
SET IDENTITY_INSERT Tst OFF


SET IDENTITY_INSERT Tst ON
EXEC('SET IDENTITY_INSERT Tst ON; INSERT INTO Tst(C) VALUES (1);') /* Also succeeds like this*/


  1. Primärnyckel med ASC- eller DESC-beställning?

  2. Vilken PostgreSQL-kolumntyp ska användas för att lagra en Java BigDecimal?

  3. Infoga 2 miljoner rader i SQL Server snabbt

  4. MySQL saktar ner efter INSERT