Tôi có một bảng với chỉ số duy nhất trên hai cột, id_parent và SORT_ORDER để được chính xácMysql tạm thời ngăn chặn chỉ số duy nhất
+----+-----------+------------+-------------+-------------+-------------+
| id | id_parent | sort_order | some_data | other_data | more_data |
+----+-----------+------------+-------------+-------------+-------------+
| 1 | 1 | 1 | lorem ipsum | lorem ipsum | lorem ipsum |
| 2 | 1 | 2 | lorem ipsum | lorem ipsum | lorem ipsum |
| 3 | 1 | 3 | lorem ipsum | lorem ipsum | lorem ipsum |
+----+-----------+------------+-------------+-------------+-------------+
Bây giờ tôi muốn cập nhật chúng, dữ liệu của họ và SORT_ORDER của họ trong một đi. sort_order sẽ thay đổi từ 1 - 2 - 3
thành, ví dụ: 2 - 3 - 1
.
Nhưng khi tôi bắt đầu chạy báo cáo cập nhật, chỉ mục duy nhất chặn tôi, đúng như mong đợi, nói rằng tôi không thể có hai hàng với id_parent = 1 and sort_order = 2
. Vâng, tôi có thể đặt nó 4 cho bây giờ, cập nhật các hàng khác theo thứ tự chính xác, và sau đó thiết lập này. Nhưng sau đó, tôi sẽ phải chạy một câu lệnh bổ sung và hầu hết có thể thêm logic bổ sung vào ngôn ngữ kịch bản lệnh của tôi để xác định thứ tự cập nhật chính xác. Tôi cũng sử dụng ORM, và nó thậm chí còn trở nên bất tiện hơn.
Câu hỏi của tôi bây giờ, có cách nào để làm cho mysql tạm thời bỏ qua chỉ mục này không? Giống như bắt đầu một giao dịch đặc biệt, trong đó chỉ mục nào sẽ được tính toán ngay trước khi cam kết giao dịch?
Bảng của bạn có phải là InnoDB hay không MyISAM? – Pacerier