sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kontrollerar du om IDENTITY_INSERT är inställt på PÅ eller AV i SQL Server?

Sedan SET IDENTITY_INSERT är en sessionskänslig, den hanteras i buffertnivå utan att lagras någonstans. Det betyder att vi inte behöver kontrollera IDENTITY_INSERT status eftersom vi aldrig använder detta nyckelord i nuvarande session.

Tyvärr, ingen hjälp för detta.

Bra fråga dock :)

Källa:Här

Uppdatera Det finns kanske sätt att göra detta, även ses på webbplatsen jag länkade till, IMO, det är för mycket ansträngning för att vara användbart.

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


  1. Tips för läs-/skrivlås beroende på transaktionsisoleringsnivå i MSSQL

  2. Effektiv konvertering av datum mellan UTC och lokal (dvs. PST) tid i SQL 2005

  3. Hur man cachelagrar Parsed JSON för offlineanvändning

  4. Hur man gör ett urval med array innehåller värdesats i psql