Tôi có một loạt dữ liệu cần phải được viết vào SQL, tôi nên làm gì để kiểm tra dữ liệu trong SQL để ngăn chặn cùng một dữ liệu được chèn vào bảng?Làm cách nào để ngăn chặn chèn dữ liệu trùng lặp vào bảng SQL Server?
dữ liệu Ví dụ được chèn vào:
David
James
John
Nếu dữ liệu thứ 4 là John
lần nữa, tôi muốn hệ thống để bỏ qua kỷ lục trùng lặp (John).
Cho đến nay tôi có:
SqlConnection myCnn = new SqlConnection(cnn);
String _state = "Insert into CamNo1(platename, date, camID, path, filename) OUTPUT INSERTED.platename values(@msg, getdate(), @camID, @path, @filename)";
SqlCommand _Query = new SqlCommand(_state, myCnn);
_Query.Parameters.AddWithValue("@msg", msg);
_Query.Parameters.AddWithValue("@camID", camID);
_Query.Parameters.AddWithValue("@path", imageFile);
_Query.Parameters.AddWithValue("@filename", name);
try
{
myCnn.Open();
string checkname = (string)_Query.ExecuteScalar();
myCnn.Close();
getcheckname = checkname;
Console.WriteLine("OK");
}
catch (Exception)
{
}
tôi đã nhận chuỗi giá trị checkname được chèn cuối cùng, những gì nên tôi kiểm tra dữ liệu?
Tôi đồng ý rằng bạn không nên sử dụng ràng buộc/chỉ mục một mình để đối phó với dữ liệu trùng lặp, nhưng thật tuyệt khi biết bạn sẽ không bao giờ phải vệ sinh dữ liệu vì bạn có ràng buộc đó. Tôi nghĩ rằng bạn có thể quan tâm để xem xét chức năng 'MERGE' mà SQL Server 2008 đã thêm vào, nó kết hợp cú pháp cho tùy chọn của bạn là' Nếu tồn tại Cập nhật khác Chèn' và tôi tin rằng chúng đã làm cho nó hiệu quả hơn. http://technet.microsoft.com/en-us/library/bb510625.aspx –
Đúng, chắc chắn biết và sử dụng câu lệnh MERGE. Có thể sửa đổi câu trả lời của tôi để bao gồm một ví dụ. – Bert
Cảm ơn bạn đã đưa ra câu trả lời chi tiết như vậy, tôi đang cố gắng ngay bây giờ :) – KayX