Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ne pas autoriser la clé primaire composite inversée dans MySQL

Vous pouvez créer une procédure stockée à insérer dans cette table.

DELIMITER $$
CREATE PROCEDURE insert_distance(IN p_town1 varchar(50), IN p_town2 varchar(50), IN p_distance int)
BEGIN
INSERT INTO distance(town1, town2, distance)
SELECT LEAST(p_town1, p_town2), GREATEST(p_town1, p_town2), p_distance;
END $$
DELIMITER ;

En utilisant uniquement cette procédure pour insérer, vous vous assurez qu'une erreur est renvoyée lorsque l'entrée existe déjà. Et vous n'insérez pas accidentellement les villes dans le mauvais ordre.