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 :

[FB2]Index Unique et collation


Sujet :

Firebird

  1. #1
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut [FB2]Index Unique et collation
    Je voudrais définir un index unique sur une colonne de type varchar / collation FR_FR et que cet cet index soit insensible a la casse et aux accents.
    Est-ce possible ?
    J'utilise firebird 2.0.3
    Si vous êtes libre, choisissez le Logiciel Libre.

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    cf notes de versions "Expression Indexes"
    et pour le collate, avec 2.0.3 le ES_ES_CI_AI ferra l'affaire (il y a un FR_FR_CI_AI dans Firebird 2.1)
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    "Expression Indexes" ? je connaissais pas, d'aprés ce que j'ai compris il permet de créer un index sur une colonne avec une expression appliquée a cette même colonne, c'est une solution; mais il n'y aurais pas un jeu de caractères qui appliquerait la règle que j'ai définie plus haut directement ?

    A propos des collations, j'ai remarqué qu'un domaine avec une collation FR_FR appliqué a une colonne n'a pas d'effet sur elle.
    Exp: si colonne='Aaéèçà' -> UPPER(colonne)='AAÉÈÇÀ'.
    alors que si cette colonne est configuré directement avec Collate FR_FR,
    le résultat est UPPER(colonne)='AAEECA'.
    C'est normal ça ?
    Si vous êtes libre, choisissez le Logiciel Libre.

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    "Expression Indexes" ? je connaissais pas, d'aprés ce que j'ai compris il permet de créer un index sur une colonne avec une expression appliquée a cette même colonne, c'est une solution; mais il n'y aurais pas un jeu de caractères qui appliquerait la règle que j'ai définie plus haut directement ?
    ES_ES_CI_AI fera l'affaire (il y a un FR_FR_CI_AI dans Firebird 2.1)
    http://www.developpez.net/forums/sho...ht=ES_ES_CI_AI
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    A propos des collations, j'ai remarqué qu'un domaine avec une collation FR_FR appliqué a une colonne n'a pas d'effet sur elle.
    Exp: si colonne='Aaéèçà' -> UPPER(colonne)='AAÉÈÇÀ'.
    alors que si cette colonne est configuré directement avec Collate FR_FR,
    le résultat est UPPER(colonne)='AAEECA'.
    C'est normal ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE DOMAIN D_1 AS 
     VARCHAR(10)
     COLLATE FR_FR;
     COMMIT;
    CREATE TABLE T12 
    (
      C1                  D_1 
    );
    COMMIT;
    INSERT INTO T12 VALUES ('Aaéèçà');
    COMMIT;
    SELECT UPPER(C1) FROM T12;
    UPPER
    -----
    AAEECA
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  6. #6
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    C'est en mettant a jour une colonne avec un domaine que j'ai rencontré ce soucis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE T1 (C1 VARCHAR(10) CHARACTER SET ISO8859_1)
     
    CREATE DOMAIN D_1 AS
    VARCHAR(10) CHARACTER SET ISO8859_1
    COLLATE FR_FR;
     
    update RDB$RELATION_FIELDS set  --ALTER TABLE T1 ALTER C1 TYPE D_1;
    RDB$FIELD_SOURCE = 'D_1'
    where (RDB$FIELD_NAME = 'C1') and
    (RDB$RELATION_NAME = 'T1')
     
    INSERT INTO T1 VALUES ('Aaéèçà');
     
    SELECT UPPER(C1) FROM T1
     
    UPPER = 'AAÉÈÇÀ'
    Si vous êtes libre, choisissez le Logiciel Libre.

  7. #7
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    mais ça, si tu veux jouer toi même avec les tables systèmes, il faut que tu assumes ...
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  8. #8
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    En faite il faudrait plutôt faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update RDB$RELATION_FIELDS set
    RDB$FIELD_SOURCE = 'D_1',
    RDB$COLLATION_ID = 4        -- N° 4 -> Collate FR_FR
    where (RDB$FIELD_NAME = 'C1') and
    (RDB$RELATION_NAME = 'T1')
    En plus, reconfigurer une colonne c'est vraiment pas jouer.
    Si vous êtes libre, choisissez le Logiciel Libre.

  9. #9
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    En plus, reconfigurer une colonne c'est vraiment pas jouer.
    oh que si
    mais bon, chacun sa prise de risque
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  10. #10
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Le risque est calculé, je travaille sur une base en développement encore.
    Si vous êtes libre, choisissez le Logiciel Libre.

  11. #11
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Je pense qu'il serait pas mal d'extraire le script et de le faire ravaler dans une base vierge après modification pour enlever tous les doutes.

  12. #12
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par makowski Voir le message
    mais ça, si tu veux jouer toi même avec les tables systèmes, il faut que tu assumes ...
    Même en procédant par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE T1 ALTER C1 TYPE D_1;
    le résultat est le même.
    Si vous êtes libre, choisissez le Logiciel Libre.

Discussions similaires

  1. Connaitre l'index unique déclenché
    Par Hobbi1 dans le forum Oracle
    Réponses: 4
    Dernier message: 17/11/2006, 15h50
  2. Réponses: 3
    Dernier message: 02/05/2006, 21h36
  3. Réponses: 7
    Dernier message: 27/04/2006, 10h21
  4. 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
  5. [IMP/EXP] Probleme d'index unique
    Par rours dans le forum Oracle
    Réponses: 17
    Dernier message: 18/05/2005, 15h37

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