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

Développement SQL Server Discussion :

Erreur avec IDENTITY_INSERT


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut Erreur avec IDENTITY_INSERT
    Bonsoir,

    J'ai une erreur bizarre avec IDENTITY_INSERT qui ne marche plus sur 2 de mes tables.
    Lorsque je mets SET IDENTITY_INSERT COMMANDES ON, je n'arrive pas à insérer des valeurs dans la colonne IDENTITY.
    Et ce message s'affiche:

    Msg*8101, Niveau*16, État*1, Ligne*1
    Une valeur explicite de la colonne identité de la table 'COMMANDES' ne peut être spécifiée que si la liste des colonnes est utilisée et si IDENTITY_INSERT est défini sur ON
    Comment puis-je remédier à ça?

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Bonjour,

    Avec le code de l'INSERT ce serait plus simple.
    Mais l'erreur est à priori explicite : vous avez probablement oublié de préciser les noms des champs de la table entre INSERT INTO table ([champ1], ...) VALUES ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Voici le message de la 2nde table, je suis obligé de laisser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDENTITY_INSERT est défini à ON
    parce que ce message s'affiche dans le cas écheant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg*545, Niveau*16, État*1, Ligne*1
    Une valeur explicite doit être spécifiée dans la colonne d'identité de la table 'histo_fac' quand IDENTITY_INSERT est défini à ON, ou qu'un utilisateur de la réplication effectue une insertion dans une colonne d'identité NOT FOR REPLICATION.
    Toutes les colonnes ont été spécifiées pour une insertion, de l'ID (Identifiant de la table) a la dernière colonne de la table, avec bien sûre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDENTITY_INSERT est défini à ON
    .

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    1) postez le DDL de vos tables
    2) postez l'ordre INSERT
    3) vous ne pouvez pas avoir simultanément plusieurs INDENTITY INSERt ON


    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/ * * * * *

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    RE-Bonsoir,

    Je m'explique pour les tests que j'effectuais j'ai definis IDENTITY_INSERT à ON, sinon par defaut il est à OFF, au debut des tests ça marchait. Mais maintenant pas du tout. Donc j'ai ete obligé de maintenir IDENTITY_INSERT à OFF pour les 2 tables. Mais c'est les messages que je ne comprends pas. Avec IDENTITY_INSERT à OFF les 2 tables fonctionnent à merveille POUR LES INSERTs. Il n'y a que les modifications sur
    la table commandes qui recréent de nouvelles lignes. Ce je veux eviter à tout prix. C'est ce probleme qui est nouveau. Vous trouverez les DDL des 2 tables et les procedures stockées en fichiers joints
    Fichiers attachés Fichiers attachés

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Bonsoir,

    Si vous mettez l'option IDENTITY_INSERT à ON pour la table COMMANDE, cela veut dire qu'il faut que vous précisiez quelle valeur vous voulez mettre pour le champ incrémental "numero".

    Ceci ne peut pas marcher, car il y manque justement "numero" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO commandes( date_cde,taux_remise,client,etat)
    								   VALUES (@date_cde ,@taux_remise,@client ,@etat)
    Soit quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO commandes( numero,date_cde,taux_remise,client,etat)
    								   VALUES (12345,@date_cde ,@taux_remise,@client ,@etat)

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Salût à tous, j'ai pu resoudre ce dernier probleme qui était due à une mauvaise écriture des requetes . Notamment les UPDATES dont je mets 1 exemple ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE commandes SET date_cde=@date_cde,taux_remise=@taux_remise,client=@client,etat=@etat
    					  where numero=@numero
    Merci tous.

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

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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