Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1334 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Condition sur null de deux attributs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Condition sur null de deux attributs

n°1531896
Ynnead
Posté le 21-03-2007 à 23:15:04  profilanswer
 

Bonjour,
Je souhaite mettre en place une contrainte d'intégrité sur deux attributs pouvant être nuls, mais pas les deux à la fois, ni aucun des deux.
Je m'explique :
 

Code :
  1. create table entity (
  2.   attA  number  null,
  3.   attB  number  null,
  4.   -- others
  5. ) ;


Quand attA est null, attB doit être renseigné. Et inversement. Les deux ne peuvent être null en même temps. Les deux ne peuvent être renseignés en même temps.
En gros, il me faudrait un XOR (ou l'inverse, je confonds), mais comme ça n'existe apparement pas dans la norme SQL, je dois trouver une autre solution, qui peut être implémentée avec une contrainte CHECK ou un trigger.
Si vous avez une idée, toute proposition est la bienvenue :hello:
Merci d'avance.
 
PS : Le SGBD est Oracle 10gr2

mood
Publicité
Posté le 21-03-2007 à 23:15:04  profilanswer
 

n°1532328
MagicBuzz
Posté le 22-03-2007 à 17:23:06  profilanswer
 

ben un trigger, ça se fait en 10 secondes.
 
"trigger oracle" dans google et à mon avis tu vas vite trouver comment faire.
 
ensuite, pour le CHECK, jamais utilisé, je ne sais pas si tu veux t'en sortir avec. c'est peut-être plus rapide que les triggers, mais c'est vachement plus limité, donc je fais tout habituellement par trigger.


Message édité par MagicBuzz le 22-03-2007 à 17:23:14
n°1532482
vttman2
Je suis Open ...
Posté le 23-03-2007 à 07:59:42  profilanswer
 

Trigger +1  
A part ça je vois pas comment niveau BdD on pourrait faire  
autrement ...


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
n°1532948
Ynnead
Posté le 23-03-2007 à 17:47:51  profilanswer
 

Trigger, donc.
 
Mais j'aurai bien vu une contrainte du style

Code :
  1. CHECK((attA is null and attB is not null) or (attA is not null and attB is null))


Après je sais pas si la syntaxe est correcte, je testerai quand même quand j'aurai le temps.


Message édité par Ynnead le 23-03-2007 à 17:48:44
n°1535933
Bazile
Posté le 29-03-2007 à 16:33:31  profilanswer
 

Bizarre d'avoir deux colonne dans une table dont une seule des deux doit etre renseignée ?
Il serait plus logique d'avoir une seule colonne att plutot que attA et attb et d'avoir une colonne (un booleen) qui indique si att est de type "A" ou "B", non ?

n°1536693
tg94
Posté le 31-03-2007 à 12:43:49  profilanswer
 

Je me range de l'avis de Bazile, ça n'a pas vraiment de sens d'avoir un champ vide sur chaque tuple.
 
tu es sûr de ton modèle de données ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Condition sur null de deux attributs

 

Sujets relatifs
Des objets en attributs de classe.Sellection de lignes excel sur condition
[PHP] Classe MYSQL impossible d'accéder aux attributs de la classe[PHP & XMLReader] Ne passe pas dans les noeuds Attributs [Resolu]
[Transact-SQL] instruction Go dans une condition Ifmettre un null à la place d'un double
[MySQL] Problème avec requête et condition INgetRootPane() et getParent() qui renvoient null
[SQL] Besoin d'aide sur les attributs pour une requeterecherche formation pour null très null + petite macro
Plus de sujets relatifs à : Condition sur null de deux attributs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR