Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 07h48   #1
Membre du Club
 
Inscription : janvier 2008
Messages : 243
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 243
Points : 63
Points : 63
Par défaut Contrôle sur les données à l'insert

Bonjour,

Je développe une petite appli Access 2002 basée sur SQL Server 2008R2.

J'aimerais effectuer un contrôle à l'insertion des données mais je ne sais pas trop où et comment le faire (trigger SQL, ctrl dans le formulaire access, ...).

En fait j'édite une table comportant plusieurs colonne de prix (P1, P2, P3, ...) ainsi qu'une colonne Rabais. La règle ici est que si le rabais est renseigné, les prix doivent absolument être nuls et à l'inverse, si les prix sont renseignés, le rabais doit être nul!

Comment et où dois-je faire ce petit contrôle?

D'avance merci pour votre réponse et bonne journée

Julius
funkyjul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h40   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Une simple contraintes CHECK :

Code :
1
2
3
4
5
6
ALTER TABLE MaTable
   ADD MaContrainteCHECK
   CHECK (
       ((P1 IS NULL AND P2 IS NULL AND P3 IS NULL ...) AND Rabais IS NOT NULL)
   OR ((P1 IS NOT NULL AND P2 IS NOT NULL AND P3 IS NOT NULL ...) AND Rabais IS NULL)
)
Mais attention, tous les cas ne sont pas couverts.. Exemple p1 null, P2 renseigne, Rabais ???

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 13h27   #3
Membre du Club
 
Inscription : janvier 2008
Messages : 243
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 243
Points : 63
Points : 63
Merci SQLpro,

C'est clair, c'est bref ... c'est cool.

Tu as raisons pour les autres cas. Mais sur ton modèle je devrais m'en sortir.
Mais pour tous les gérer ( en + des contraintes d'intégrité), n'aurais-je pas meilleur temps de créer un trigger?



Julius
funkyjul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 16h38   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
As ton avis si on a créé les contraintes c'était pour faire joli ???
  • Les trigger permettent de faire du code itératif là ou une contrainte fait de l'ensembliste (toujours plus rapide en volume).
  • Les trigger agissent après alors que la contrainte agit avant...

Alors as ton avis trigger ou contrainte ???

C'est marrant cette propension qu'ont les développeurs à toujours choisir la pire solution !!!

Dans les journées SQL Server chez Microsoft la semaine dernière, j'ai montré la différence de perf entre trigger et contraintes.... Dommage que vous ne soyez pas venu... D'autant que
1) c'était gratuit
2) y'avait même à manger et à boire...

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 16h58   #5
Membre du Club
 
Inscription : janvier 2008
Messages : 243
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 243
Points : 63
Points : 63
Merci de m'éclairer. J'aurai appris quelque chose

Je ne suis pas encore très au point comme tu l'as constaté mais j'essaie de m'améliorer!!

Merci encore
A++

Julius
funkyjul est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h25.


 
 
 
 
Partenaires

Hébergement Web