Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MSSQL] Inséré une valeur incrémenter

    28 mars 2011 à 16:03:55

    Bonjour à tous,

    Voici le contexte, une bdd est alimentée par des utilisateurs qui créer de entreprises.
    Dans chacune de ces nouvelles lignes j'ai besoin d'insérer une valeur qui est n+1 de la valeur de la ligne précédente
    ex:
    société adresse code
    Renault 1 rue... A0001
    Peugeot 5 bvd... A0002
    Citroen 2 rue... A0003
    ... ... ...
    FIAT 3 bvd... A2230


    Je ne sais pas s'il est possible d'ajouter ce "code" lors de l'ecriture de la ligne (trigger ?), mais il me faudrait une requete pour insérer ces codes, quelque chose du style:
    update tabsoc set code=max(code)+1 where code = NULL

    Mais je ne sais pas comment ecrire cette requête.
    Quelqu'un peut m'aider ?
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2011 à 16:24:49

      Si c'est un simple INT, suffit que ton champ soit auto-incrémenté.

      Mais là, t'a l'air d'avoir une lettre devant...
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2011 à 16:27:20

        Oui effectivement il y a une lettre en début de champs... :(
        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2011 à 16:28:48

          Bon ben faudrait des détails alors...

          C'est toujours la même ? Ca influe sur l'incrémentation ? Ca poserait problème de séparer la lettre et le chiffre en 2 colonnes ??
          • Partager sur Facebook
          • Partager sur Twitter
            29 mars 2011 à 15:22:55

            Oui le code est toujours du même format"A0000001", la lettre A suivi de 7 chiffres.
            Et il faut impérativement que toute la chaine de caractère soit dans la même colonne
            • Partager sur Facebook
            • Partager sur Twitter
              29 mars 2011 à 15:25:20

              Pourquoi ?? Déjà, si c'est toujours A, tu pourrais limite l'ajouter en dur, et même si c'est en 2 colonnes, suffit d'une concaténation si tu veux récupérer les 2 ensemble...
              • Partager sur Facebook
              • Partager sur Twitter
                29 mars 2011 à 17:29:57

                Tu prends un champ INT et un champ texte, tu incrémentes le champ INT et tu fais une concaténation avec la fonction CONCAT()
                • Partager sur Facebook
                • Partager sur Twitter
                  29 mars 2011 à 17:47:32

                  Citation : Taguan

                  Pourquoi ?? Déjà, si c'est toujours A, tu pourrais limite l'ajouter en dur, et même si c'est en 2 colonnes, suffit d'une concaténation si tu veux récupérer les 2 ensemble...

                  Je ne peux pas modifier le logiciel qui utilise cette base... il lui faut la valeur lettre+chiffres dans un champ.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 mars 2011 à 17:49:01

                    Même pas modifier les requêtes faites par ce logiciel ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 mars 2011 à 17:56:34

                      Tu peux concatener via une requête SQL

                      SELECT CONCAT(champ1, champ2)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 mars 2011 à 17:58:27

                        Y'a probablement moyen de faire une fonction qui utilise SUBSTRING pour capturer les chiffres, qui transtype cette chaîne en entier, qui ajoute un puis qui reconvertit tout ça en chaîne pour ensuite concaténer et renvoyer le résultat final.

                        Mais c'est certain que c'est pas particulièrement intéressant si on peut modifier la structure de la base de données.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mars 2011 à 9:40:06

                          Fais une colonne de clé primaire normale (en auto_increment) et utilise un trigger pour remplir cette colonne supplémentaire.

                          Sinon comme dit Fayden, mais dans un trigger par exemple.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 mars 2011 à 14:05:53

                            Citation : Taguan

                            Même pas modifier les requêtes faites par ce logiciel ?


                            je n'ai pas acces aux requetes du soft malheureusement

                            Citation : Fayden

                            Y'a probablement moyen de faire une fonction qui utilise SUBSTRING pour capturer les chiffres, qui transtype cette chaîne en entier, qui ajoute un puis qui reconvertit tout ça en chaîne pour ensuite concaténer et renvoyer le résultat final.

                            Mais c'est certain que c'est pas particulièrement intéressant si on peut modifier la structure de la base de données.


                            C'est exactement ce qu'il me faut, faire une requête qui coupe le champ en 2 (A+chiffres), incrémente la partie chiffre, concatène les deux parties, update du champ dans la table.
                            Le problème c'est que je ne sais pas comment écrire cette requête...
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [MSSQL] Inséré une valeur incrémenter

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown