Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come si verifica se IDENTITY_INSERT è impostato su ON o OFF in SQL Server?

Dal momento che SET IDENTITY_INSERT è sensibile alla sessione, viene gestito a livello di buffer senza archiviarlo da qualche parte. Ciò significa che non è necessario controllare IDENTITY_INSERT stato poiché non usiamo mai questa parola chiave nella sessione corrente.

Siamo spiacenti, nessun aiuto per questo.

Ottima domanda però :)

Fonte:qui

Aggiorna Ci sono dei modi forse per farlo, visto anche nel sito che ho linkato, IMO, è troppo faticoso per essere utile.

if

(select max(id) from MyTable) < (select max(id) from inserted)

--Then you may be inserting a record normally

BEGIN
    set @I = 1 --SQL wants something to happen in the "IF" side of an IF/ELSE
END

ELSE --You definitely have IDENTITY_INSERT on.  Done as ELSE instead of the other way around so that if there is no inserted table, it will run anyway


BEGIN
.... Code that shouldn't run with IDENTITY_INSERT on
END