Bonjour,
Voici, ci-dessous, la fin de ma procédure d'enregistrement de numéros de téléphone, dans laquelle je souhaite éviter d'enregistrer un numéro trop long qui serait tronqué dans la table par MySQL, ou bien manifestement erroné parce que trop court. Je ne sais pas encore si la taille de 16 caractères de ma colonne est suffisante ; je l'ajusterai, ainsi que ma procédure, si besoin. Au passage, si quelqu'un sait quelle est la longueur maxi d'un numéro de téléphone à l'international, je suis preneur de l'info !
Ça fonctionne bien pour un numéro trop court mais l'exception ne se déclenche pas pour un numéro trop long !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 -- Vérification du numéro de téléphone IF LENGTH(numero) NOT BETWEEN 4 AND 16 THEN SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO = 10021, MESSAGE_TEXT = 'Numéro de téléphone trop court ou trop long'; END IF; -- Enregistrement du numéro de téléphone INSERT INTO te_telephone_tel (tel_id_personne, tel_id_type_telephone, tel_numero) VALUES (id_personne, id_type_tel, numero); SET id_telephone = LAST_INSERT_ID(); END;//
Du coup, comme je le prévoyais, le numéro est enregistré tronqué dans la BDD.
EDIT : Je viens d'essayer avec CHAR_LENGTH mais c'est pareil !![]()
Partager