Tôi có một bảng regionkey
:Việc trao đổi hai hàng DB mà không vi phạm các ràng buộc
areaid -- primary key, int
region -- char(4)
locale -- char(4)
Toàn bộ phần còn lại của cơ sở dữ liệu là nước ngoài vừa khít với areaid. Trong bảng này có một chỉ mục trên (khu vực, miền địa phương) với một ràng buộc duy nhất.
Vấn đề là tôi có hai hồ sơ:
101 MICH DETR
102 ILLI CHIC
Và tôi cần phải trao đổi các (vùng, miền địa phương) các lĩnh vực giữa chúng, vì vậy mà tôi gió lên với:
101 ILLI CHIC
102 MICH DETR
Các cách tiếp cận ngây thơ sẽ không hoạt động vì nó vi phạm chỉ mục duy nhất trên vùng và ngôn ngữ:
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
Làm cách nào tôi có thể thực hiện việc này? Có cách nguyên tử nào để hoán đổi không? Gợi ý?
Điều này có thể đủ điên rồ để hoạt động. Bạn có nghĩ rằng anh ta nên quấn nó trong một giao dịch? – Broam
một lần chèn đơn lẻ là một giao dịch tiềm ẩn duy nhất anyway – gbn
Chỉ cần một chút nhanh hơn tôi, @gbn ;-) – karlgrz