Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

MERGE có phải là một câu lệnh nguyên tử trong SQL2008 không?

MERGE là nguyên tử có nghĩa là tất cả các thay đổi được cam kết hoặc tất cả các thay đổi được khôi phục lại.

Nó không ngăn chặn các khóa trùng lặp trong trường hợp đồng thời cao. Thêm holdlock gợi ý sẽ giải quyết vấn đề đó.

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. Thay thế ISNUMERIC () hiệu quả trên SQL Server?

  2. Cách chọn một bản ghi trong phép nối bên trái

  3. Điểm của COLLATIONS cho các cột nvarchar (Unicode) là gì?

  4. Nhận danh sách tất cả các khóa chính trong cơ sở dữ liệu

  5. nếu tôi muốn tìm những gì đang tham chiếu đến một đối tượng trong SQL Server, việc tìm kiếm đồng bộ hóa có toàn diện không?