sql >> Databáze >  >> RDS >> Sqlserver

Problém vložení souběžnosti – vícevláknové prostředí

Trik spočívá v tom, že do příkazu INSERT přidáte WHERE, aby INSERT fungovalo pouze v případě, že položka neexistuje, následovaný příkazem SELECT. Za předpokladu, že záznam lze identifikovat podle sloupce ID, napište:

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] 

Příkazy nemusíte vkládat do transakce, protože každý příkaz je proveden ve své vlastní implicitní transakci. Není tedy možné, aby dva VLOŽENÍ uspěly současně.

UPRAVIT :Syntaxe INSERT ... SELECT je nezbytná, protože TSQL nepovoluje části VALUES a WHERE v příkazu INSERT.



  1. Ze serveru byl přijat neznámý počáteční index znakové sady '255'

  2. Chyba Pycharm:Nesprávně nakonfigurováno

  3. Oracle získá 1h zpětné datum

  4. MySql:Jak volat uloženou proceduru před deklarací příkazů