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

Czy MERGE jest instrukcją niepodzielną w SQL2008?

MERGE ma atomowe znaczenie, że albo wszystkie zmiany są zatwierdzane, albo wszystkie zmiany są cofane.

Nie zapobiega duplikowaniu kluczy w przypadku wysokiej współbieżności. Dodanie holdlock podpowiedź o to zadba.

MERGE INTO CustomerSpend WITH (HOLDLOCK) AS T 
USING ( SELECT ? AS ID, ? AS NetValue, ? AS VoidValue ) AS V 
ON T.ID = V.ID 
WHEN MATCHED THEN 
    UPDATE SET T.ID = V.ID, T.NetValue = T.NetValue + V.NetValue, T.VoidValue = T.VoidValue + V.VoidValue 
WHEN NOT MATCHED THEN 
    INSERT ( ID,NetValue,VoidValue ) VALUES ( V.ID, V.NetValue, V.VoidValue );



  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 używać IF...THEN Logic w SQL Server

  2. TSQL Zaokrągla liczbę dziesiętną w górę

  3. MS SQL pinguje zewnętrzny serwer

  4. Jak przyspieszyć DbSet.Add()?

  5. Przekaż identyfikator najemcy przez połączenie z serwerem sql