Intercepter erreur et agir avec l'enregistrement touché
Posté : 06 févr. 2008, 05:05
Bonjour!
Voici la structure de ma table:
Comme vous voyez, il y a une clef unique qui empêche d'avoir deux fois le même numéro de téléphone. C'est amusant et pratique, mais pas tout le temps.
Lorsque je demande un UPDATE ou un INSERT (bien sûr après avoir vérifié l'existence préalable d'un enregistrement semblable), les résultats ne sont pas prévisibles et stables.
Ce que je veux faire, c'est intercepter le code d'erreur (habituellement, c'est le 1062 (doublon sur la clef 2). Ok, j'utilise mysql_errno()
Mais je veux continuer à apporter mes modifications. Or, pour cela, j'ai besoin de savoir avec quel enregistrement ma commande entre en conflit.
En bref, après provocation d'une erreur (disons 1062), je veux récupérer id_coord de l'enregistrement existant. Comment faire?
Puis-je trouver une fonction du style mysql_insert_id?
Ou encore, puis-je faire mysql_errno(id_coord)?
Merci à l'avance.
Voici la structure de ma table:
Code : Tout sélectionner
CREATE TABLE `paroisses_coordonnees` (
`id_coord` int(11) NOT NULL auto_increment,
`adresse` varchar(40) NOT NULL,
`ville` varchar(30) NOT NULL default 'Saint-Georges',
`code_post` varchar(7) NOT NULL default 'G5Y',
`Telephone1` varchar(20) NOT NULL default '(418) ',
`Telephone2` varchar(20) NOT NULL default '(418) ',
`Telephone3` varchar(20) NOT NULL default '(418) ',
`paroisse_id` int(11) NOT NULL default '1',
`Courriel` varchar(40) NOT NULL,
`Notes1` text NOT NULL,
PRIMARY KEY (`id_coord`),
UNIQUE KEY `Adresses` (`adresse`,`ville`,`Telephone1`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Les adreses pour plusieurs' AUTO_INCREMENT=1304 ;
Lorsque je demande un UPDATE ou un INSERT (bien sûr après avoir vérifié l'existence préalable d'un enregistrement semblable), les résultats ne sont pas prévisibles et stables.
Ce que je veux faire, c'est intercepter le code d'erreur (habituellement, c'est le 1062 (doublon sur la clef 2). Ok, j'utilise mysql_errno()
Mais je veux continuer à apporter mes modifications. Or, pour cela, j'ai besoin de savoir avec quel enregistrement ma commande entre en conflit.
En bref, après provocation d'une erreur (disons 1062), je veux récupérer id_coord de l'enregistrement existant. Comment faire?
Puis-je trouver une fonction du style mysql_insert_id?
Ou encore, puis-je faire mysql_errno(id_coord)?
Merci à l'avance.