Bien traiter les erreurs de doublon sur SQL Server
1 réponse
Gilles TOURREAU
Bonjour,
J'ai plusieurs contraintes UNIQUE dans différentes tables de ma base de
données. Cela pour éviter d'avoir des informations en doubles
(références en stock, ...etc).
J'ai une application qui demande à l'utilisateur de saisir des
informations à l'écran.
Je voudrais savoir comment gérer et prévenir l'utilisateur que les
informations qu'il a saisie existe déjà...
Je vois 2 solutions :
- Soit faire un INSERT et traiter les exceptions généré par SQL Server.
Si par exemple l'erreur n°2627 est déclenché (Violation d'une
contrainte) je dis alors à l'utilisateur de saisir autre chose !
- Ou alors je fais un SELECT avant le INSERT pour voir si ce que
l'utilisateur a saisie n'existe pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred.M.
Bonjour Gilles, Sans hésitations je répondrais la gestion d'exception. Non seulement les outils de développement actuels sont suffisants souples et afinnés pour ça (fini les on error gosub..) mais en plus cela t'évitera une 2ème requête qui pourrait dégrader tes performances.
Cordialement, Fred. M.
"Gilles TOURREAU" a écrit :
Bonjour,
J'ai plusieurs contraintes UNIQUE dans différentes tables de ma base de données. Cela pour éviter d'avoir des informations en doubles (références en stock, ...etc).
J'ai une application qui demande à l'utilisateur de saisir des informations à l'écran.
Je voudrais savoir comment gérer et prévenir l'utilisateur que les informations qu'il a saisie existe déjà...
Je vois 2 solutions : - Soit faire un INSERT et traiter les exceptions généré par SQL Server. Si par exemple l'erreur n°2627 est déclenché (Violation d'une contrainte) je dis alors à l'utilisateur de saisir autre chose !
- Ou alors je fais un SELECT avant le INSERT pour voir si ce que l'utilisateur a saisie n'existe pas.
Selon vous quelle solution est la meilleure ?
Cordialement
-- Gilles TOURREAU Responsable informatique
Société P.O.S Spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr
Bonjour Gilles,
Sans hésitations je répondrais la gestion d'exception. Non seulement les
outils de développement actuels sont suffisants souples et afinnés pour ça
(fini les on error gosub..) mais en plus cela t'évitera une 2ème requête qui
pourrait dégrader tes performances.
Cordialement,
Fred. M.
"Gilles TOURREAU" a écrit :
Bonjour,
J'ai plusieurs contraintes UNIQUE dans différentes tables de ma base de
données. Cela pour éviter d'avoir des informations en doubles
(références en stock, ...etc).
J'ai une application qui demande à l'utilisateur de saisir des
informations à l'écran.
Je voudrais savoir comment gérer et prévenir l'utilisateur que les
informations qu'il a saisie existe déjà...
Je vois 2 solutions :
- Soit faire un INSERT et traiter les exceptions généré par SQL Server.
Si par exemple l'erreur n°2627 est déclenché (Violation d'une
contrainte) je dis alors à l'utilisateur de saisir autre chose !
- Ou alors je fais un SELECT avant le INSERT pour voir si ce que
l'utilisateur a saisie n'existe pas.
Bonjour Gilles, Sans hésitations je répondrais la gestion d'exception. Non seulement les outils de développement actuels sont suffisants souples et afinnés pour ça (fini les on error gosub..) mais en plus cela t'évitera une 2ème requête qui pourrait dégrader tes performances.
Cordialement, Fred. M.
"Gilles TOURREAU" a écrit :
Bonjour,
J'ai plusieurs contraintes UNIQUE dans différentes tables de ma base de données. Cela pour éviter d'avoir des informations en doubles (références en stock, ...etc).
J'ai une application qui demande à l'utilisateur de saisir des informations à l'écran.
Je voudrais savoir comment gérer et prévenir l'utilisateur que les informations qu'il a saisie existe déjà...
Je vois 2 solutions : - Soit faire un INSERT et traiter les exceptions généré par SQL Server. Si par exemple l'erreur n°2627 est déclenché (Violation d'une contrainte) je dis alors à l'utilisateur de saisir autre chose !
- Ou alors je fais un SELECT avant le INSERT pour voir si ce que l'utilisateur a saisie n'existe pas.
Selon vous quelle solution est la meilleure ?
Cordialement
-- Gilles TOURREAU Responsable informatique
Société P.O.S Spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr