Jetez un œil au sqlfiddle suivant: 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) ;
J'ai une table de base des contacts. Les champs network_idet network_contact_idcontiennent des numéros d'identification liés à d'autres tables.
Je veux pouvoir exécuter des INSERT IGNORErequêtes sur cette table, mais je veux utiliser la combinaison de network_idet network_contact_idcomme clé unique pour la comparaison.
Ainsi, par exemple, si j'essayais d'insérer un contact qui avait network_id = 4et network_contact_id = 12, la INSERT IGNORErequête verrait que l'entrée existe déjà et ignorerait toute erreur levée.
Donc, fondamentalement, ce network_idn'est pas unique. network_contact_idn'est pas unique. Mais la combinaison des deux est unique. Comment configurer cela? Dois-je avoir un seul autre champ qui correspond aux valeurs concaténées des deux autres champs? Ou existe-t-il un moyen de configurer les clés de cette table pour qu'elle fasse ce dont j'ai besoin?