Eche un vistazo al siguiente sqlfiddle: 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) ;
Tengo una tabla básica de contactos. Los campos network_idy network_contact_idcontienen números de identificación que enlazan con otras tablas.
Quiero poder ejecutar INSERT IGNOREconsultas en esta tabla, pero quiero usar la combinación de network_idy network_contact_idcomo la clave única para comparar.
Entonces, por ejemplo, si intenté insertar un contacto que tenía network_id = 4y network_contact_id = 12, la INSERT IGNOREconsulta vería que esa entrada ya existe e ignoraría cualquier error que se haya lanzado.
Entonces, básicamente, network_idno es único. network_contact_idNo es único. Pero la combinación de los dos es única. ¿Cómo configuro esto? ¿Tendría que tener otro único campo que sean los valores concatenados de los otros dos campos? ¿O hay una manera de configurar las teclas para esta tabla para que haga lo que necesito?
fuente

idcampo como clave principal si estaunique keycosa ahora está configurada?Cambie la definición de la tabla agregando una
UNIQUE KEYrestricción en la combinación de las dos columnas:También debe comprobar esta respuesta por Bill Karwin en las diferencias entre
INSERT IGNORE,REPLACEyINSERT ... ON DUPLICATE KEY UPDATEfuente