2012-04-28 34 views
5

đã tìm kiếm các chủ đề như vậy và tìm thấy 2 giải pháp khác nhau nhưng không có tác phẩm.MySQL INSERT IGNORE hoặc ON DUPLICATE KEY DO_NOTHING

Bảng của tôi có cấu trúc | ID (auto_increment primary_key) | UID (int) | FAV_ID (int) |

Tôi cần chèn bản ghi mới vào FAV_TABLE này nếu UID và FAV_ID (cả hai) đã tồn tại.

Ví dụ về truy vấn của tôi:

INSERT INTO FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id) ON DUPLICATE KEY UPDATE uid = uid 

hay này một

INSERT IGNORE FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id); 

Như hướng dẫn sử dụng mysql nói truy vấn này không thêm kỷ lục chỉ khi primary_key là như nhau. Và tôi cần truy vấn không thêm bản ghi nếu cặp uid + fav_id là duy nhất. Bất kỳ giải pháp nào? Cảm ơn bạn

Trả lời

4

Bạn cần phải thêm một UNIQUE KEY trên các cột:

ALTER TABLE FAV_TABLE ADD UNIQUE KEY(uid, fav_id); 
+0

tuyệt vời, cảm ơn rất nhiều! – 265

2

INSERT IGNORE hoặc ON DUPLICATE KEY chỉ hoạt động khi một khóa duy nhất được sao chép.

Bạn cần thêm một chỉ số UNIQUE trên cả hai trường uidfav_id. Bằng cách đó, khi bạn chèn một cặp trùng lặp, nó sẽ bị bỏ qua.

Các vấn đề liên quan