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

SQL Oracle Discussion :

Insertion avec incrémentation


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut Insertion avec incrémentation
    Bonjour,
    j'ai 2 table, par exemple

    TABLE A contient

    iD LETTRE
    1 A
    2 B
    3 C

    TABLE B

    ID DEB FIN
    1 100A 200A
    2 100B 200B
    3 100C 200C
    4 101A 200A
    5 101B 200B
    6 101C 200C
    ainsi de suite
    Dans une formulaire il y a 2 champs NUM_DEB et NUM_FIN
    Dans NUM_DEB je saisi 100 et NUM_FIN je saisi 200

    quand je clique sur un bouton VALIDER, je souhaite avoir une insertion comme dans l'exemple de la TABLE B ci_dessus
    Mais je n'arrive pas concevoir la procédure adéquate
    Merci de vos réponse

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    Quelles sont les règles pour alimenter les valeurs?

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut
    Les données dans la table A sont invariable, et déjà stockées à l'avance

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Le "ainsi de suite" est trop vague, peut-on avoir un 25, 101A, 200B par exemple ?
    C'est pourquoi Vanagreg demande la règle de gestion pour renseigner les 3 colonnes de la table B(ID, DEB, FIN)

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Utiliser un query récursif avec CONNECT BY pour générer les numéro de 100 à 200
    et un CROSS APPLY sur la table A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT v || lettre AS deb, 200 || lettre as finFROM (
    	SELECT 100 + level - 1 AS v
    	FROM DUAL
    	CONNECT BY 100 + level - 1 <= 200
    ) num
    CROSS APPLY
    SELECT * FROM table_a
    Si vous voulez en faire une fonction, il faudra définir un TYPE OBJECT et TABLE OF de ce type que renverra la fonction qui prendra début et fin en paramètres.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    et un CROSS APPLY sur la table A
    Je doute qu'en 10gR2 il y ait le CROSS APPLY. Mais sinon un CROSS JOIN fera l'affaire.

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Je vois plusieurs inconvénients

    • les valeurs A, B, C constituent à la fois un viol de la 1NF (donnée non atomique) et de la 2NF (pas de dépendance fonctionnelle de l'attribut par rapport à son identifiant
    • si on enrichit la première table de nouvelle(s) ligne(s), par exemple 4, D, il faudra mettre à jour en masse la deuxième table pour ajouter toutes les lignes correspondantes !


    Donc, ne stockez pas ces valeurs A, B, C dans la deuxième table, faites une concaténation lors de la restitution si besoin.

  8. #8
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut
    Les valeurs dans la TABLE A ne changeront jamais, je suis d'accord pour la concaténation

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut
    Citation Envoyé par McM Voir le message
    Bonjour,

    Le "ainsi de suite" est trop vague, peut-on avoir un 25, 101A, 200B par exemple ?
    C'est pourquoi Vanagreg demande la règle de gestion pour renseigner les 3 colonnes de la table B(ID, DEB, FIN)
    le ainsi de suite c'est jusqu'à 200C

Discussions similaires

  1. Insertion multiple avec incrémentation
    Par Beaudelicius dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/05/2012, 15h58
  2. Interface : Insertion avec un champs auto incrémenté
    Par amnay dans le forum ODI (ex-Sunopsis)
    Réponses: 7
    Dernier message: 17/04/2012, 01h27
  3. requête d'insertion avec incrémentation
    Par sam01 dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/10/2010, 14h27
  4. [AC-2003] Insertion avec valeur incrémentée
    Par walker34 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/09/2009, 16h54
  5. Update ou insert avec incrément d'un champ
    Par dany13 dans le forum ASP
    Réponses: 5
    Dernier message: 15/10/2004, 12h53

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