Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какъв е обхватът на SET IDENTITY_INSERT xyz ON?

Това е опция за сесия, която маса може да има включена опция само за всяка една маса в даден момент, но множество различни сесии могат да я имат включена за една и съща маса (не съм сигурен обаче, че някога би било добра идея!)

Когато дъщерен пакет завърши (което задава тази опция), изглежда, че автоматично се деактивира за връзката.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем при зареждане на данни от SQL Data Reader в DataTable

  2. Linux - PHP 7.0 и MSSQL (Microsoft SQL)

  3. Как да получите OBJECT_NAME() от различна база данни в SQL Server

  4. Как може да бъде върната датата на последната промяна на таблица в SQL Server 2005?

  5. Риск от сблъсък на UUID, използвайки различни алгоритми