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

Chèn vấn đề đồng tiền - Môi trường đa luồng

Bí quyết là thêm một câu lệnh WHERE vào câu lệnh INSERT của bạn để INSERT chỉ hoạt động nếu mục không tồn tại, theo sau là câu lệnh SELECT. Giả sử rằng bản ghi có thể được xác định bởi một cột ID mà bạn sẽ viết:

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] 

Bạn không cần đặt các câu lệnh trong một giao dịch vì mỗi câu lệnh được thực hiện trong một giao dịch ngầm định của riêng nó. Vì vậy, không có cách nào mà hai INSERTS sẽ thành công cùng một lúc.

CHỈNH SỬA :Cú pháp INSERT ... SELECT là cần thiết vì TSQL không cho phép một phần VALUES và một phần WHERE trong câu lệnh 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. Cách sử dụng Top with Ties trong SQL Server - SQL Server / TSQL Hướng dẫn Phần 114

  2. Cách tạo thêm câu lệnh cột cho tất cả các bảng trong cơ sở dữ liệu trong SQL Server - Hướng dẫn sử dụng SQL Server / T-SQL Phần 49

  3. Cách chọn bản ghi không tồn tại trong Sql Server

  4. Kết hợp giá trị trường thành chuỗi trong SQL Server

  5. Lỗi không thể hoàn thành chuẩn bị hoãn lại khi sử dụng cơ sở dữ liệu cục bộ làm máy chủ được liên kết