Prenons par exemple Spoutnik la tortue, qui se trouve dans notre table Animal.
Code : SQL
SELECT id, sexe, date_naissance, nom, espece_id FROM Animal WHERE
nom = 'Spoutnik';
id sexe date_naissance
nom
espece_id
53 M
2007-04-02 01:45:00 Spoutnik 3
Étant donné que nous avons mis un index UNIQUE sur (nom, espece_id ), il est absolument impossible d'avoir une autre tortue
du nom de Spoutnik dans notre table. La requête suivante va donc échouer lamentablement.
Code : SQL
INSERT INTO Animal (sexe, nom, date_naissance, espece_id)
VALUES ('F', 'Spoutnik', '2010-08-06 15:05:00', 3);
Code : Console
ERROR 1062 (23000): Duplicate entry 'Spoutnik3' for key 'ind_uni_nom_espece_id'
Par contre, si on utilise REPLACE au lieu de INSERT :
Code : SQL
REPLACE INTO Animal (sexe, nom, date_naissance, espece_id)
VALUES ('F', 'Spoutnik', '2010-08-06 15:05:00', 3);
Code : Console
Query OK, 2 rows affected (0.06 sec)
Pas d'erreur, mais vous pouvez voir que deux lignes ont été affectées par la commande. En effet, Spoutnik est mort, vive Spoutnik
!
Code : SQL
SELECT id, sexe, date_naissance, nom, espece_id FROM Animal WHERE
nom = 'Spoutnik';
id sexe date_naissance
nom
espece_id
63 F
2010-08-06 15:05:00 Spoutnik 3
Partie 2 : Index, jointures et sous-requêtes
144/414
www.openclassrooms.com
Code : SQL
SELECT id, sexe, date_naissance, nom, espece_id FROM Animal WHERE
nom = 'Spoutnik';
id sexe date_naissance
nom
espece_id
53 M
2007-04-02 01:45:00 Spoutnik 3
Étant donné que nous avons mis un index UNIQUE sur (nom, espece_id ), il est absolument impossible d'avoir une autre tortue
du nom de Spoutnik dans notre table. La requête suivante va donc échouer lamentablement.
Code : SQL
INSERT INTO Animal (sexe, nom, date_naissance, espece_id)
VALUES ('F', 'Spoutnik', '2010-08-06 15:05:00', 3);
Code : Console
ERROR 1062 (23000): Duplicate entry 'Spoutnik3' for key 'ind_uni_nom_espece_id'
Par contre, si on utilise REPLACE au lieu de INSERT :
Code : SQL
REPLACE INTO Animal (sexe, nom, date_naissance, espece_id)
VALUES ('F', 'Spoutnik', '2010-08-06 15:05:00', 3);
Code : Console
Query OK, 2 rows affected (0.06 sec)
Pas d'erreur, mais vous pouvez voir que deux lignes ont été affectées par la commande. En effet, Spoutnik est mort, vive Spoutnik
!
Code : SQL
SELECT id, sexe, date_naissance, nom, espece_id FROM Animal WHERE
nom = 'Spoutnik';
id sexe date_naissance
nom
espece_id
63 F
2010-08-06 15:05:00 Spoutnik 3
Partie 2 : Index, jointures et sous-requêtes
144/414
www.openclassrooms.com
