IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

CONSTRAINT UNIQUE avec abs()


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut CONSTRAINT UNIQUE avec abs()
    Bonjour,

    Je debute dans la création d'un BDD postgresql.

    J'ai 2 champs, le premier texte le second integer. j'arrive a cree une contraite du genre
    UNIQUE(1er_champ,2em_champ)

    Mais voila, je souhaite utiliser la valeur absolu sur le second champ.
    Mais UNIQUE(1er_champ,abs(2em_champ)) ou UNIQUE(1er_champ,@(2em_champ))
    ne fonctionne pas.

    Merci pour toute info.

    PS: autre point UNIQUE & PRIMARY KEY cela revient-il au même?

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 736
    Points
    1 736
    Par défaut
    Essaie de créer un index unique sur (1er_champ,abs(2em_champ))
    Pour ta question, une PK est toujours unique, par contre il n'y a qu'une PK au maximum par table
    Par contre il peut y avoir pour une même tables plusieurs contraintes uniques sur différentes colonnes (oui différents groupes de colonnes)

  3. #3
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    merci de ta réponse. Mais je ne vois pas.

    En plus j'ai laissé ce projet de coté quelque temps et j'ai déja tout oublié.


    Donc comme tu me l'a dit, J'essai...

  4. #4
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 736
    Points
    1 736
    Par défaut
    Tu peux créer une colonne en plus dans ta table qui serait la valeur absolue de ton 2ème champ (alimentée via trigger sur la table, qui à chaque insert/update renseigne cette colonne), et faire ta contrainte sur cette colonne
    Je ne vois pas d'autre solution

  5. #5
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    c'est une bonne idée...

    Mais le fait de mettre +/- id_user etais une astuce pour eviter d'ajouté une colonne.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par benoit_iund Voir le message
    PS: autre point UNIQUE & PRIMARY KEY cela revient-il au même?
    non

    les 2 expriment une contrainte d'unicité mais seule la PK peut être référencée à partir d'une autre table en tant que FOREIGN KEY

  7. #7
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    Bon je vais me résigné ...

    et ajouter une colonne.


    Merci

Discussions similaires

  1. Domain et constraint UNIQUE lors de création de table
    Par nek_kro_kvlt dans le forum SQL
    Réponses: 3
    Dernier message: 22/10/2006, 20h49
  2. Réponses: 2
    Dernier message: 22/09/2006, 17h40
  3. Réponses: 1
    Dernier message: 15/05/2006, 16h37
  4. Réponses: 6
    Dernier message: 09/03/2006, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo