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

MERGE атомарно изявление в SQL2008 ли е?

MERGE е атомарно, което означава, че или всички промени са ангажирани, или всички промени са върнати назад.

Не предотвратява дублиращи се ключове в случай на висока едновременност. Добавяне на holdlock hint ще се погрижи за това.

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. Къде се съхраняват регистрираните сървъри?

  2. Изтрийте всички данни в базата данни на SQL Server

  3. FIND_IN_SET() еквивалент в SQL Server

  4. Как правите заявка в int колона за произволна стойност?

  5. Представяне на общи изрази за таблици в SQL Server