Hãy xem sqlfiddle sau: http://sqlfiddle.com/#!2/dacb5/1
CREATE TABLE contacts
(
id int auto_increment primary key,
name varchar(20),
network_id int,
network_contact_id int
);
INSERT INTO contacts
(name, network_id, network_contact_id)
VALUES
('John', 4, 10),
('Alex', 4, 11),
('Bob', 4, 12),
('Jeff', 4, 45),
('Bill', 7, 11),
('Walter', 7, 45),
('Jessie', 7, 360) ;
Tôi có một bảng liên lạc cơ bản. Các trường network_id
và network_contact_id
chứa các số id liên kết đến các bảng khác.
Tôi muốn có thể chạy INSERT IGNORE
các truy vấn vào bảng này, nhưng tôi muốn sử dụng kết hợp network_id
và network_contact_id
làm khóa duy nhất để đối chiếu.
Vì vậy, ví dụ, nếu tôi cố gắng chèn một liên hệ có network_id = 4
và network_contact_id = 12
, INSERT IGNORE
truy vấn sẽ thấy mục đó đã tồn tại và bỏ qua bất kỳ lỗi nào được đưa ra.
Về cơ bản, network_id
không phải là duy nhất. network_contact_id
không phải là duy nhất. Nhưng sự kết hợp của hai là độc nhất. Làm thế nào để tôi thiết lập điều này? Tôi có phải có một trường khác là các giá trị được nối của hai trường khác không? Hoặc có cách nào để thiết lập các phím cho bảng này để nó sẽ làm những gì tôi cần?