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.