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

Oracle Discussion :

Valeur par défaut dans une table objet


Sujet :

Oracle

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut Valeur par défaut dans une table objet
    Bonjour,

    J'ai créé une table à partir d'un type, et je cherche à définir une valeur par défaut pour un champ de ma table objet, mais je n'ai encore rien trouvé pour faire ça (ni au niveau du type, ni au niveau de la table).

    Merci pour vos conseils

    Eric

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    dans l'Application developper guide - Object Relational Feature, chapitre 2, tu trouveras un parfait exemple sous "Default Values for Objects and Collections"

    en fait il suffit d'apeller la clause DEFAULT avec le constructeur
    [/code]

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    merci pour ta réponse.
    Ca ne répond pas exactement à mon problème, mais ca me serviras probablement aussi.

    En fait ma table est créée à partir d'un seul type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE UTILISATEUR OF UTILISATEUR_TYPE(
    ... 
    )
    J'ai pris un peu de recul et j'en suis arrivé à la conclusion que la notion de valeur par défaut ne pouvait pas s'appliquer dans ce cas précis puisque il me faudra obligatoirement fournir l'ensemble des valeurs au constructeur de type lors d'une insertion.

    Je pense donc gérer ce problème de valeur par défaut plus en amont, par exemple au niveau d'une procédure qui s'occupera des insertions.

    Néanmoins, si des gens expérimentés ont d'autres propositions, je suis preneur.

    Cordialement

    Eric

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Ricky81
    Bonjour,

    merci pour ta réponse.
    Ca ne répond pas exactement à mon problème, mais ca me serviras probablement aussi.

    En fait ma table est créée à partir d'un seul type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE UTILISATEUR OF UTILISATEUR_TYPE(
    ... 
    )
    J'ai pris un peu de recul et j'en suis arrivé à la conclusion que la notion de valeur par défaut ne pouvait pas s'appliquer dans ce cas précis puisque il me faudra obligatoirement fournir l'ensemble des valeurs au constructeur de type lors d'une insertion.

    Je pense donc gérer ce problème de valeur par défaut plus en amont, par exemple au niveau d'une procédure qui s'occupera des insertions.

    Néanmoins, si des gens expérimentés ont d'autres propositions, je suis preneur.

    Cordialement

    Eric
    Si, la réponse de Marc Musette répondait à votre problème.

    Vous pouvez fixer les valeurs par défaut dès la création de votre table, en utilisant les contructeurs des objets sous-jacents.
    Vous pouvez contraindre vos utilisateurs à passer par vos procédures de gestion des données, mais vous ne pouvez pas totalement empêcher quelqu'un de faire une insertion directe dans la table, et donc de ne pas initialiser certaines colonnes avec leur valeur par défaut.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    en réalité la clause DEFAULT ne sait pas marcher si ta table ne comprend qu'une colonne ... minimum DEUX

    [/code]

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    Citation Envoyé par Marc Musette
    en réalité la clause DEFAULT ne sait pas marcher si ta table ne comprend qu'une colonne ... minimum DEUX
    Oui, et c'est bien mon cas puisque je crée la table directement à partir d'un type.

    Merci pour vos réponses

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    oui, je n'avais pas compris cela dans ton premier message...

    ... ajouter une deuxième colonne ? passer par une fonction ?


    à toi de jouer

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Ricky81
    Bonjour,

    Citation Envoyé par Marc Musette
    en réalité la clause DEFAULT ne sait pas marcher si ta table ne comprend qu'une colonne ... minimum DEUX
    Oui, et c'est bien mon cas puisque je crée la table directement à partir d'un type.

    Merci pour vos réponses
    Vous créez donc une table qui ne contient qu'une seule colonne , puisque basée sur un type ne comprenant qu'un seul attribut ???
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    pour faire plus clair :

    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
    17
    CREATE OR REPLACE TYPE UTILISATEUR_TYPE AS OBJECT
    (
      LOGIN VARCHAR2(20),
      PASSWORD VARCHAR2(20),
      NOM VARCHAR2(20),
      PRENOM VARCHAR2(20),
      ADRESSE VARCHAR2(80),
      EMAIL VARCHAR2(60),
      ACTIF CHAR(1)
    )
    /
     
    CREATE TABLE UTILISATEUR OF UTILISATEUR_TYPE(
      CONSTRAINT PK_UTILISATEUR PRIMARY KEY(login),
      CONSTRAINT NN_UTILISATEUR_PASSWORD CHECK(password IS NOT NULL),
      CONSTRAINT CK_UTILISATEUR_ACTIF CHECK(actif IN ('O','N')))
    /

    Toutes mes excuses si je me suis mal fait comprendre.

  10. #10
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Dans ce cas, je pense qu'il faut réécrire la méthode constructeur du type, pour que les champs de l'objet soit initialisés.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Merci beaucoup SheikYerbouti

    C'est ce que je vais faire.

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    Citation Envoyé par Ricky81
    Bonjour,

    pour faire plus clair :

    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
    17
    CREATE OR REPLACE TYPE UTILISATEUR_TYPE AS OBJECT
    (
      LOGIN VARCHAR2(20),
      PASSWORD VARCHAR2(20),
      NOM VARCHAR2(20),
      PRENOM VARCHAR2(20),
      ADRESSE VARCHAR2(80),
      EMAIL VARCHAR2(60),
      ACTIF CHAR(1)
    )
    /
     
    CREATE TABLE UTILISATEUR OF UTILISATEUR_TYPE(
      CONSTRAINT PK_UTILISATEUR PRIMARY KEY(login),
      CONSTRAINT NN_UTILISATEUR_PASSWORD CHECK(password IS NOT NULL),
      CONSTRAINT CK_UTILISATEUR_ACTIF CHECK(actif IN ('O','N')))
    /

    Toutes mes excuses si je me suis mal fait comprendre.
    heu effectivement ici, il y a plus d'une colonne !!!! pourquoi ne donnes-tu pas directement le véritable ordre SQL que tu utilises !?!?!? on perdrait moins de temps ... en plus tu dis que tu crées cette table à partir d'un seul type ... comprends pas bien ce retournement de situation ...

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    je m'excuse si je n'ai pas été assez clair et si je vous ai fais perdre du temps.

    Dans ma tête je crée bien ma table à partir d'un type puisque c'est un type que j'ai créé. Maintenant, si ce n'est pas comme ca qu'on décrit une telle situation, je m'en excuse et j'en prend note.
    Pour le script, j'aurais effectivement dû le mettre dès le départ.

    Cordialement

    Eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/11/2009, 20h11
  2. Réponses: 10
    Dernier message: 04/11/2008, 14h30
  3. Réponses: 6
    Dernier message: 14/02/2006, 20h53
  4. [MySQL] Affichage de valeurs par selection dans une table
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 16/12/2005, 17h04
  5. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 18h20

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