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

Firebird Discussion :

unique et null - FB2


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut unique et null - FB2
    J'ai une table avec colonnes A (not null) et B (null). Je veux créér unique contraint qui permets:

    A (not null) B (null)
    ----------
    1 null
    1 null
    1 5
    1 6
    2 null
    2 1
    2 5

    mais pas ceci:

    A (not null) B (null)
    ----------
    2 1
    2 1

    Vous connaissez meilleur solution que:

    create unique index <nomdeindex>
    on <table>
    computed by (A ||'x'|| coalesce (B, '__'|| <colonne PK> ||'__'));

    DAB

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Par défaut
    Selon ton exemple c'est impossible car la contrainte d'unicité va retourner une erreur pour
    1 null
    1 null
    à moins que cela soit une erreur de saisie je pense et que tu voulais plutôt dire pour ton exemple :

    1 null
    1 5
    1 6
    2 null
    2 1
    2 5

    Sinon tu n'as pas le choix
    A not null et
    ALTER TABLE <table> ADD CONSTRAINT <nomdeindex> UNIQUE (A, B)
    USING INDEX IX_UNIQUE

  3. #3
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Citation Envoyé par sillycoder Voir le message
    Selon ton exemple c'est impossible car la contrainte d'unicité va retourner une erreur pour
    1 null
    1 null
    Mon example est correct et ma solution (index computed by ...) marche (bien?).
    Je pourrais aussi utiliser TRIGGER, mais est-ce mieux?

    Pour être plus precise:

    TAB1
    PK (not null) A (not null) B (null)
    ----------
    1 1 null
    2 1 null
    3 1 5
    4 1 6
    5 2 null
    6 2 1
    7 2 5

    create unique index UIXXX
    on TAB1
    computed by (A ||'x'|| coalesce (B, '__'|| PK ||'__'));

    insert into TAB1 (PK, A, B) values (8, 1, 5);
    est alors interdite

    mais
    insert into TAB1 (PK, A, B) values (8, 1, null);
    est OK

    DAB

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Par défaut
    Il fallait préciser dès le départ car je ne pouvais pas deviner que ta table contenait trois champs. Dans ton exemple, tu n'avais mis que deux et dans ce cas là, cela n'aurait pas marché.

    1 null
    1 null
    ce n'est pas du tout la même chose que

    1 1 null
    2 1 null
    Néanmoins je ne vois pas pourquoi tu ne veux pas utiliser la contrainte d'unicité autrement. Cette solution ne me parait pas mal.

Discussions similaires

  1. UNIQUE index avec des valeurs null
    Par DeeVoiD dans le forum MySQL
    Réponses: 2
    Dernier message: 24/03/2009, 16h18
  2. Index unique pas unique avec des nulls ?
    Par marot_r dans le forum Modélisation
    Réponses: 6
    Dernier message: 17/03/2008, 19h53
  3. [FB2]Index Unique et collation
    Par TryExceptEnd dans le forum Débuter
    Réponses: 11
    Dernier message: 01/03/2008, 10h44
  4. length is null or is not object dans IE uniquement
    Par MacDo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/09/2006, 14h14
  5. Sql Server Express - Probleme index unique et valeurs null
    Par Fayoul dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/02/2006, 17h22

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