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

Проблем с вмъкване на паралелността - многонишкова среда

Номерът е да добавите WHERE към оператора INSERT, така че INSERT да работи само ако елементът не съществува, последван от оператора SELECT. Ако приемем, че записът може да бъде идентифициран чрез колона с идентификатор, вие бихте написали:

INSERT INTO MyTable (ID,Col1,Col2,...) 
SELECT @IDValue,@Col1Value,@Col2Value, ...
WHERE NOT EXISTS (SELECT ID  
              FROM MyTable 
              WHERE [email protected]) 

SELECT *  
FROM MyTable 
Where [email protected] 

Не е необходимо да поставяте операторите в транзакция, защото всеки оператор се изпълнява в собствена имплицитна транзакция. Следователно няма начин две INSERT да успеят едновременно.

РЕДАКТИРАНЕ :Синтаксисът INSERT ... SELECT е необходим, защото TSQL не позволява част VALUES и WHERE в оператора INSERT.



  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 Server

  2. Как да архивирате програмно файл на SQL Server 2014 Express Localdb (.mdf)

  3. Как да принудя колектора за боклук на файловия поток да завърши работата си с най-висок приоритет?

  4. ADO.net SqlTransaction подобрява производителността

  5. SSIS LookUp не се занимава с NULL, както се казва в документите, че трябва