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

Bases de données Delphi Discussion :

[rad studio-MsSql] Insert et Update dans une transaction


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad studio-MsSql] Insert et Update dans une transaction
    Bonjour

    J'ai une problème en réseau quand 2 postes travaillent (Pas de réponse au deuxieme) en même temp donc je veux améliorer ma méthode en SQL a l'intérieur d'un transaction je n'ai jamais fais cela avant donc je demande votre aide.

    j'ai besoin de faire un insert dans ma table et par la suite un update qui se déroule en 2 étapes différentes.

    Dans mon Insert j'insère les données de l'enrégistrement précedent et par le suite l'utilisateur modifie les informations qui ont changés.(Update)

    Est-ce que je dois utilisé un Query et mettre ma transaction a l'intérieur.

    2 eme question

    j'aimerais récupéré l'ID de l'enregistrement que je crée pour l'insérer dans un champ identification ou numéro. Présentement je me sert d'une table avec un compteur que j'augmente de 1 a chaque enrégistrement et met la table a jour pour l'enrégistrement suivant ce qui n'est pas pratique quand plusieurs utilisateurs travaille sur la même table. ce qui fait qu'il a pas de réponse du serveur MsSql.

    Si vous avez un exemple c'a m'aiderait a comprendre.

    Merci

    Mario

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Quel est le problème ?

    Le champ identifiant n'est pas en auto incrément ? Ce serait plus simple je pense.
    Sinon je ne vois pas tellement l’intérêt d'insérer et modifier au lieu de faire un seul insert ?

    Tu pourrais passer le champ en auto-incrément, faire l'insert et récupérer l'identifiant. Tu le stockes et ensuite tu fais ton update.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    qry.SQL.Append('INSERT INTO TableName () VALUES ();');
    qry.SQL.Append('SELECT AUTO_INCREMENT nb');
    qry.SQL.Append('FROM  INFORMATION_SCHEMA.TABLES');
    qry.SQL.Append('WHERE TABLE_SCHEMA = ' + QuotedStr('DatabaseName'));
    qry.SQL.Append('AND   TABLE_NAME   = ' + QuotedStr('TableName'));
     
    qry.Open;
    if not qry.Eof then
      i := qry.FieldByName('nb').asInteger;

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par retwas Voir le message
    Le champ identifiant n'est pas en auto incrément ?


    Sinon je ne vois pas tellement l’intérêt d'insérer et modifier au lieu de faire un seul insert ?


    pour le reste, tout dépend du set de composant utilisé ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    en MSSQL, il y a surtout les IDENDITY idéal pour les clés primaires.
    La gestion d'une table compteur, c'est lent, j'ai connu un éditeur qui faisait cela pour gérer ORACLE ou MSSQL, l'obtention d'un numéro c'était 99% du temps de l'insertion dans une table
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    en MSSQL, il y a surtout les IDENDITY idéal pour les clés primaires.
    La gestion d'une table compteur, c'est lent, j'ai connu un éditeur qui faisait cela pour gérer ORACLE ou MSSQL, l'obtention d'un numéro c'était 99% du temps de l'insertion dans une table
    Effectivement j'avais lu MySQL au lieu de MsSQL
    Du coup sur SQL Server il y a le @@IDENTITY et SCOPE_IDENTITY()

  6. #6
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad studio-MsSql] Insert et Update dans une transaction
    Bonjour

    Merci pour vos réponses.

    J'ai modifié ma table pour avoir un identity a oui avec inc de 1. Je n'ai plus besoin de mettre un autre table a jour pour avoir un compteur a +1 , tout ce fait a la création de l'enrégistrement a une vitesse éclair et pour tous les usagers.


    Merci encore.

    Mario

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

Discussions similaires

  1. Encapsuler plusieurs inserts / updates dans une transaction
    Par sqlnoob dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/06/2015, 17h40
  2. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  3. Réponses: 2
    Dernier message: 11/09/2007, 14h41
  4. Insertion,update dans une BD à table avec beaucoup de champs
    Par randriano dans le forum C++Builder
    Réponses: 29
    Dernier message: 13/03/2007, 19h11
  5. [Pl/Sql] Insert ou Update dans une fonction
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 12
    Dernier message: 18/04/2006, 15h28

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