Tìm kiếm một số thông tin chi tiết về việc liệu quy trình Upsert (chèn hay nếu tồn tại, sau đó cập nhật) được coi là thực hành không tốt trong lập trình cơ sở dữ liệu. Tôi làm việc trong máy chủ SQL nếu có bất kỳ sự liên quan nào.Cơ sở dữ liệu Upserts - Thực hành tốt hay xấu?
Tại một địa điểm tôi đã làm việc cách đây vài tháng, người quản lý cư trú DB guru đã nêu trong các tiêu chuẩn mã hóa db mới được viết (hầu hết trong số đó tôi đã đồng ý), rằng Upserts nên tránh.
Tôi thực sự không thể thấy lý do hợp lý cho điều này, và xem xét ý thức hợp lý của bản thân về thực hành lập trình tốt. Tôi nghĩ rằng chúng hữu ích cho việc quản lý dữ liệu thẳng về phía trước và giúp tránh các số quy trình được lưu trữ quá mức.
Tìm kiếm một số thông tin chi tiết/thảo luận sẽ giúp tôi đi đến kết luận về điều này.
Cảm ơn.
Cập nhật Đáp lại nhận xét:
Bối cảnh cụ thể tôi đề cập đến là việc tạo ra hoặc cập nhật của một đại diện dữ liệu đối tượng miền trong cơ sở dữ liệu. Ví dụ, một đối tượng "Person" tồn tại như một biểu diễn của bảng "Person" trong cơ sở dữ liệu. Tôi chỉ cần một cơ chế để tạo một Người mới hoặc cập nhật một người hiện có. Ở đây tôi có tùy chọn tạo thủ tục lưu sẵn Upsert hoặc hai thủ tục được lưu trữ riêng biệt - một cho Cập nhật và một cho Chèn.
Bất kỳ ưu điểm hay nhược điểm nào trong chế độ xem anyones?
Từ quan điểm của Oracle, thay vào đó hãy sử dụng câu lệnh MERGE. – DCookie
MERGE cũng tồn tại trong SQL Server (2005+ tôi tin) – RPM1984