cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 2012
-
20 nov. 2009 à 11:02
JeremyLecouvert
Messages postés139Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention10 mai 2010
-
14 déc. 2009 à 11:43
Bonjour,
je voudrais que le champ numero_facture d'une table soit unique mais uniquement quand il est non null
c'est a dire que tant que ma facture est pas validée , il peut etre nul (facture ne attente de validation) puis on lui attribue un numéro qui doit etre unique.
ma facture contient deja un champ id qui est sa clé primaire
Pour l'instant quand je mets unique a numero_facture , je ne peux pas en avoir deux null ....
Afisse
Messages postés4Date d'inscriptionmercredi 27 septembre 2006StatutMembreDernière intervention10 décembre 2009 10 déc. 2009 à 23:10
Quel intérêt puisque ton champs id te garantie l'unicité de tes entrées ?
Et puis, une facture n'est pas censé avoir un numéro unique ?
Est-ce que tu peux donner le schéma de tes tables afin d'y voir plus clair.
Car à priori, en SQL, je ne vois pas comment assuré l'unicité sur un sous-ensemble de n-uplets.
Toutefois sur Oracle, il existe les triggers qui resolvent ton problème.
Mais les triggers n'existe pas en SQL :/
cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 20122 11 déc. 2009 à 11:41
Une facture est bien censé avoir un numéro unique mais disons que le numero dont je parle est la reference en comptabilite par laquelle on va retrouver la facture . Donc tant quej'ai pas valider ma facture (elle est pas en compta...) j'ai pas besoin de numero, je la retrouve par l'id
mais une fopis que j'ai verifié que tous les leements sont corrects je l'enregsitre en compta avec un numéro de facture que je désire unique ( comme ca si je demande au programme de me sortir les elements de la facture n° tant a partir de la compta, je usis sur de pas en avoir plusieurs mélangés. Voila
JeremyLecouvert
Messages postés139Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention10 mai 20102 14 déc. 2009 à 11:43
Salut,
Tu crées une séquence que tu utilisera pour l'attribution d'un numéro. Exemple (SQL standard):
CREATE SEQUENCE seq_num_fact INCREMENT 1 START 1
Et pour appeler une nouvelle valeur (par exemple dans un update):
UPDATE factures set numfact= NEXTVAL(seq_num_fact);
Evidemment, tu vires la contrainte d'unicité sur ton champ pour pas avoir le problème avec les valeurs nulles. De toute façon tu as une autre clé primaire, et la séquence te garantira d'avoir une nouvelle valeur pour chaque enregistrement.
@+
Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)