OVH Cloud OVH Cloud

Bien traiter les erreurs de doublon sur SQL Server

1 réponse
Avatar
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.

Selon vous quelle solution est la meilleure ?

Cordialement

--
Gilles TOURREAU
Responsable informatique
gilles.tourreau@pos.fr

Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

1 réponse

Avatar
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