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

MS SQL Server Discussion :

Pb double sur un insert


Sujet :

MS SQL Server

  1. #1
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 55
    Par défaut Pb double sur un insert
    bonjour à tous,

    J'ai le pb suivant avec cette instruction que j'exécute dans un DTS :

    insert into t_jrn_industrialisation (id_jrn, tra_app_nom, div_nom, tra_code, jrn_dt_debut,jrn_result)
    select isnull(max(id_jrn),0) +1,@appnom,@divnom,@tracode,getdate(),'KO' from t_jrn_industrialisation

    Je veux créer un record avec un ID_JRN + 1 à chaque passage mais malgré les verroux d'Insert, il me crée des doublons.

    Que puis je rajouter dans ma transaction en terme de code d'isolation ou de verrouillage?

    mERCI

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 98
    Par défaut
    salut,

    pourquoi tu ne déclares pas pour ta table destination t_jrn_industrialisation, un champ autoincrémenté pour ton champ id_jrn ?

    Cordialement,

    Jo

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Le mode de calcul du suivant (MAX(...) +1)ne peut que générer des problèmes. Soit vous passez en mode d'isoaltion sérializable avec toutes les conséquence que cela induit (blocages, verrous mortels...) et votre numérotation sera bonne, soit vous externalisez votre incrémentation par une routine (proc ou function), comme je l'ai indiqué dans cet article :
    http://sqlpro.developpez.com/cours/clefs/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 55
    Par défaut Pb double sur un insert
    j'ai mis en place cette solution

    - Implementation dans ma procédure stockée

    CREATE PROCEDURE sp_u_V1_INIT_JRN(@appnom as varchar(6), @divnom as varchar(3), @tracode as varchar(2))
    AS
    begin
    begin transaction
    insert into t_jrn_industrialisation (id_jrn, tra_app_nom, div_nom, tra_code, jrn_dt_debut,jrn_result)
    select isnull(max(id_jrn),0) +1,@appnom,@divnom,@tracode,getdate(),'KO' from t_jrn_industrialisation
    commit
    end
    GO

    je ne suis pas convaincu que ce mode de fonctionnement régle mon problème mais lorsque je l'éxécute 2 fois dans l'analyseur et sans commit , la 2éme attend bien jusqu'à ce que je passe le commit de la 1ere.

    Merci à tous

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

Discussions similaires

  1. Unknown column sur un INSERT
    Par jexl dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/10/2005, 00h28
  2. question sur l'insert
    Par a-chan dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/06/2005, 15h56
  3. problème sur requete insert
    Par shadowmoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/06/2005, 11h46
  4. Evenement sur UPDATE, INSERT, DELETE
    Par papouAlain dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/12/2004, 14h58
  5. [LISTENER] sur l'insertion de cd
    Par divxdede dans le forum Multimédia
    Réponses: 2
    Dernier message: 03/07/2004, 11h28

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