Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wstaw problem ze współbieżnością — środowisko wielowątkowe

Sztuczka polega na tym, aby dodać WHERE do instrukcji INSERT, aby INSERT działało tylko wtedy, gdy element nie istnieje, a po nim następuje instrukcja SELECT. Przypuśćmy, że rekord można zidentyfikować za pomocą kolumny ID, którą należy wpisać:

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] 

Nie musisz umieszczać wyciągów w transakcji, ponieważ każda instrukcja jest wykonywana w swojej własnej niejawnej transakcji. W związku z tym nie ma możliwości, aby dwie WSTAWKI odniosły sukces w tym samym czasie.

EDYTUJ :Składnia INSERT ... SELECT jest konieczna, ponieważ TSQL nie zezwala na części VALUES i WHERE w instrukcji 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. Jak wstawić dane pliku binarnego do binarnego pola SQL za pomocą prostej instrukcji INSERT?

  2. Jak kontrolować, którzy użytkownicy mogą odszyfrowywać szyfrowanie klucza symetrycznego SQL Server?

  3. Jak generować skrypty DDL (tworzenie) z SQL Server Management Studio (SSMS) — SQL Server / TSQL Tutorial, część 17

  4. Wybierz oświadczenie, aby zwrócić rodzica i nieskończone dzieci

  5. Konwersja nie powiodła się podczas konwertowania wartości varchar „simple” na typ danych int