Cố gắng kiểm tra sự tồn tại:
IF NOT EXISTS (SELECT * FROM dbo.Employee WHERE ID = @SomeID)
INSERT INTO dbo.Employee(Col1, ..., ColN)
VALUES(Val1, .., ValN)
ELSE
UPDATE dbo.Employee
SET Col1 = Val1, Col2 = Val2, ...., ColN = ValN
WHERE ID = @SomeID
Bạn có thể dễ dàng gói nó thành một thủ tục được lưu trữ và chỉ cần gọi thủ tục được lưu trữ đó từ bên ngoài (ví dụ:từ ngôn ngữ lập trình như C # hoặc bất cứ thứ gì bạn đang sử dụng).
Cập nhật: hoặc bạn chỉ có thể viết toàn bộ câu lệnh này trong một chuỗi dài (có thể làm được - nhưng không thực sự hữu ích lắm) - hoặc bạn có thể gói nó thành một thủ tục được lưu trữ:
CREATE PROCEDURE dbo.InsertOrUpdateEmployee
@ID INT,
@Name VARCHAR(50),
@ItemName VARCHAR(50),
@ItemCatName VARCHAR(50),
@ItemQty DECIMAL(15,2)
AS BEGIN
IF NOT EXISTS (SELECT * FROM dbo.Table1 WHERE ID = @ID)
INSERT INTO dbo.Table1(ID, Name, ItemName, ItemCatName, ItemQty)
VALUES(@ID, @Name, @ItemName, @ItemCatName, @ItemQty)
ELSE
UPDATE dbo.Table1
SET Name = @Name,
ItemName = @ItemName,
ItemCatName = @ItemCatName,
ItemQty = @ItemQty
WHERE ID = @ID
END
và sau đó chỉ cần gọi thủ tục được lưu trữ đó từ mã ADO.NET của bạn