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

SQL Firebird Discussion :

Ordre de création de champs


Sujet :

SQL Firebird

  1. #1
    Membre habitué
    Ordre de création de champs
    Bonjour à tous,

    je ne sais si il ya un moyen de redéfinir la position d'un champs dans une table?. je voudrais avoir la possibilité à chaque creation d'un nouveau champs de qu'il soit placer une position dans la définition de la table,
    exple, j'ai la table ESSAI :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create table essai
    champ1 integer not null,
    champ2 integer,
    primary key( (champ1));


    et si j'ajoute un champs
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    alter table essai add champ3 integer
    il est placé en dernier, mais je voudrais par exple le placer en 2eme position exple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create table essai
    champ1 integer not null,
    champ3 integer,
    champ2 integer,
    primary key( (champ1));

  2. #2
    Membre averti
    Bonjour,

    Tout est décrit dans le document http://firebirdsql.org/file/document...reference.html dont il existe une version pdf qu'il est bien utile d'avoir à portée de main (ou de souris).

    André

  3. #3
    Membre habitué
    Bonjour,
    merci pour le lien, mais , il ya pas ce que je cherche

  4. #4
    Rédacteur

    Citation Envoyé par chekkal Voir le message
    Bonjour à tous,

    je ne sais si il ya un moyen de redéfinir la position d'un champs dans une table?. je voudrais avoir la possibilité à chaque creation d'un nouveau champs de qu'il soit placer une position dans la définition de la table,
    exple, j'ai la table ESSAI :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create table essai
    champ1 integer not null,
    champ2 integer,
    primary key( (champ1));


    et si j'ajoute un champs
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    alter table essai add champ3 integer
    il est placé en dernier, mais je voudrais par exple le placer en 2eme position exple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create table essai
    champ1 integer not null,
    champ3 integer,
    champ2 integer,
    primary key( (champ1));

    À lire :
    https://sqlpro.developpez.com/cours/...az/erreurs/#L6

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  5. #5
    Membre habitué
    Désolé,
    ça répond toujours pas à ma question.

    Pour la solution de la table temporaire, c'est pas évident!, puisque l'opération de surpression de champs et de création de champs peut se faire plusieurs fois dans l'application.

  6. #6
    Expert éminent sénior
    Prenons le problème autrement :

    Qu'espérez-vous gagner en maîtrisant l'ordre des colonnes dans le script CREATE TABLE ?

    Par ailleurs, certains SGBD stockent physiquement les colonnes dans le tablespace dans un ordre différent de celui de l'ordre CREATE TABLE pour mettre toutes les colonnes de type varchar à la fin.
    Le bénéfice est de limiter les déplacements des autres colonnes en cas de changement de longueur.

    Donc l'ordre décrit dans le create table est fictif...

    Enfin, les champs sont les zones d'un état ou d'un formulaire, dans une table, il y a des colonnes, pas des champs

  7. #7
    Membre averti
    Citation Envoyé par chekkal Voir le message
    Bonjour,
    merci pour le lien, mais , il ya pas ce que je cherche
    Je veux bien croire que le document n'est pas facile à lire, mais je n'ai pas l'impression que vous ayez beaucoup cherché
    Paragraphe 5.4.2 ALTER TABLE car votre problème ne concerne pas la création où l'ordre des champs est défini par l'ordre de création.
    Après votre ALTER TABLE tablename ADD <col_def>
    exécutez
    ALTER TABLE tablename ALTER COLUMN colname POSITION newposition

    André

  8. #8
    Membre habitué
    merci alanglet, ça marche à merveille . pour être toute à fait honnête, j'ai commencé à lire le début mais tellement que c'est urgent alors j'ai cherché. ailleurs.

    C'est vrai que ma requête est un peu bizarre , mais c'est pour la bonne cause. En fait, j'ai une application de paie, avec une base de données qui change de forme et de table constamment en relation avec les employés et leurs situations, ainsi pour chaque employé avec ses indemnités qui sont propres à lui et peuvent ne pas être conforme avec d'autres employés et c'est pour ça que j'ai besoins de modifier constamment les tables des bases de données.

  9. #9
    Membre régulier
    Bonjour,

    Je ne suis pas un pro des bases de données, mais je pense que tu as un gros gros problème de conception.

    ONTAYG

  10. #10
    Membre habitué
    NON pas du tout.

    Comme je l'ai expliqué, j'ai besoin constamment de créer des champs et dans mon application leurs positions sont d'une importance capitale.

  11. #11
    Expert éminent sénior
    Citation Envoyé par chekkal Voir le message
    NON pas du tout.

    Comme je l'ai expliqué, j'ai besoin constamment de créer des champs et dans mon application leurs positions sont d'une importance capitale.
    Mais POURQUOI est-ce que cet ordre a-t-il de l'importance ? expliquez le besoin !
    Que faites vous de cet ordre, comment l'utilisez vous, pour quoi en faire ?...

  12. #12
    Membre régulier
    Citation Envoyé par chekkal Voir le message
    NON pas du tout.

    Comme je l'ai expliqué, j'ai besoin constamment de créer des champs et dans mon application leurs positions sont d'une importance capitale.
    Justement, c'est un gros problème de conception, une base doit évoluer en nombre d'enregistrements et non en nombre de champs.

    A priori, c'est quelque chose de récurrent, donc un problème de conception.

    ONTAYG

  13. #13
    Membre habitué
    Non aucun probléme de conception.

    Dans mon application les valeurs des champs sont calculées par rapport à leur position dans la table.

    exple champ1=14225; champ2=(champ1*x) /y;champ3=(champ1+champ2)*z et ainsi de suite.

  14. #14
    Membre régulier
    Re

    C'est aux requêtes de faire les calculs pas dans des champs de table, donc très très mal conçu.

    ONTAYG

  15. #15
    Membre actif
    Bonjour .
    je pense que c'est bien possible de changer la position des champs comme suit :

    alter table Matable1 alter MaColonne position 7

    lien :
    https://firebirdsql.org/refdocs/lang...ter-table.html

  16. #16
    Rédacteur

    Citation Envoyé par chekkal Voir le message
    Non aucun probléme de conception.

    Dans mon application les valeurs des champs sont calculées par rapport à leur position dans la table.

    exple champ1=14225; champ2=(champ1*x) /y;champ3=(champ1+champ2)*z et ainsi de suite.
    Donc aucun intérêt !

    Une table n'est pas une feuille de calcul d'un tableur !!!

    D'autre part des valeurs calculées n'ont pas a figurer dans une table car c'est de la redondance.

    Pour cela il faut utiliser une vue !


    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  17. #17
    Expert éminent sénior
    Citation Envoyé par SQLpro Voir le message
    Donc aucun intérêt !

    Une table n'est pas une feuille de calcul d'un tableur !!!

    D'autre part des valeurs calculées n'ont pas a figurer dans une table car c'est de la redondance.

    Pour cela il faut utiliser une vue !


    A +
    Tout à fait et plus encore, ce faisant, vous dérogez aux règles de Codd qui stipulent qu'il faut garantir l'indépendance des données et des traitements.
    Bref c'est un véritable usine à gaz que rien ne justifie.
    Et pour rappel, il n'y a pas de champs dans une base de données : il y a des colonnes