SET IDENTITY_INSERT, a cosa serve?

Ciao a tutti,

..e ben ritrovati. Mi fa piacere che questi post, a volte brevi, a volte piรน lunghi siano apprezzati! Per questo vi dico un grazie di Cuore. Quello che cerco di fare รจ di essere sempre il piรน chiaro possibile. Quindi qual'ora non lo fossi ditemelo pure.. consigli e critiche costruttive sono sempre un regalo. Buona lettura!

Oggi breve articolo sul comando T-SQL SET IDENTITY_INSERT <NOMETABELLA> ON/OFF

 

Il comando SET IDENTITY_INSERT

Diciamo subito a che cosa serve.

Supponiamo di avere una tabella <NOMETABELLA> in cui รจ definito un campo di tipo identitร  come ad esempio il campo ID nell'esempio sotto:
 

CREATE TABLE ELENCOTELEFONICO
(ID INT IDENTITY(1,1),
 CODICE VARCHAR(40)
)


Per inserire i dati nella tabella non andrรฒ a specificare un valore per campo ID. Tale valore sarร  infatti generato in automatico:

INSERT INTO <NOMETABELLA> (CODICE) VALUES ('AAA')


Tramite il comando SET IDENTITY INSERT <NOMETABELLA> ON  posso andare ad specificare e forzare il campo del campo ID.

Ad esempio:


SET IDENTITY_INSERT ELENCOTELEFONICO ON
INSERT INTO ELENCOTELEFONICO(ID,CODICE) VALUES (1,'BBB')
SET IDENTITY_INSERT ELENCOTELEFONICO OFF

 
Attenzione perรฒ a riportare a OFF il valore dell'identity_insert perchรจ altrimenti tutti gli insert privi del campo ID falliranno perchรจ l'automatismo che propone il valore per il campo ID รจ disabilitato.

Infine chiariamo due aspetti importanti che spesso mi vengono chiesti:
  • Il comando vale al di fuori della sessione. Se imposto ad ON l'identity_insert per una tabella qualsiasi applicazione che cercerร  di inservi dei dati dovrร  inserire un valore anche per il campo identity.
  • E' possibile impostare il valore dell'identity insert a ON solo per una tabella alla volta.



Ciao ed alla prossima!
Luca


Luca Biondi @ SQLServerPerformance blog!








Next post: Ultimo tentativo di accesso a SQL e la "Dedicated Admin Connection" (DAC)

Previous post: Trigger e la funzione UPDATE()

Comments

I Post piรน popolari

Speaking to Sql Server, sniffing the TDS protocol

SQL Server, find text in a Trigger, Stored Procedures, View and Function. Two ways and what ways is better

SQL Server, Avoid that damn Table Spool!