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 :

Probléme d'insertion SET IDENTITY_INSERT (champ auto incrémenté)


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Probléme d'insertion SET IDENTITY_INSERT (champ auto incrémenté)
    Bonjour,
    j'ai un problème avec ma base de données, je veux faire une insertion dans un champ qui est en auto incrémentation. Donc bien sure j'ai regardé plusieurs forum avec plusieurs possibilités mais je n'arrive pas a en faire fonctionner une seul. Si quelqu'un peut m'aider sa serait gentil .
    la requête que je voudrais exécuter(le champ en Auto Incrémentation est IDPoste):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO dbo.Poste (ID_Poste, n_Poste, OS_Poste, nature_Poste, ID_clef_HOPS, type_Poste, marque_Poste, modele_Poste, Code_Regate, ligne_principale_Poste) VALUES ('10016', ' n', ' os', 'nature', ' hops', ' type', ' marque', ' modele', ' 69', ' ligne').
    les solutions déjà essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET IDENTITY_INSERT [ nom_de_bdd . [  ] . ] table { ON }
    SET IDENTITY_INSERT [your table name goes here] ON
    SET IDENTITY_INSERT product ON

    PS: J'utilise SQL Server Management Studio 2008 pour héberger ma base de données

    Merci de prendre le temps de lire mon problème.

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 803
    Points : 34 074
    Points
    34 074
    Billets dans le blog
    14
    Par défaut
    D'après ta requête, tu essaies d'insérer la valeur '10016' dans la première colonne listée avant, c'est à dire "ID_Poste" qui est justement ta colonne autoincrémentée. Et comme elle est autoincrémentée, c'est un entier donc inutile de mettre une valeur numérique entre apostrophes !

    Puisque la colonne "ID_Poste" est autoincrémentée, ne l'inclus pas dans la liste des colonnes à alimenter par le INSERT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO dbo.Poste (n_Poste, OS_Poste, nature_Poste, ID_clef_HOPS, type_Poste, marque_Poste, modele_Poste, Code_Regate, ligne_principale_Poste) 
    VALUES (' n', ' os', 'nature', ' hops', ' type', ' marque', ' modele', ' 69', ' ligne')

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    D'après ta requête, tu essaies d'insérer la valeur '10016' dans la première colonne listée avant, c'est à dire "ID_Poste" qui est justement ta colonne autoincrémentée. Et comme elle est autoincrémentée, c'est un entier donc inutile de mettre une valeur numérique entre apostrophes !

    Puisque la colonne "ID_Poste" est autoincrémentée, ne l'inclus pas dans la liste des colonnes à alimenter par le INSERT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO dbo.Poste (n_Poste, OS_Poste, nature_Poste, ID_clef_HOPS, type_Poste, marque_Poste, modele_Poste, Code_Regate, ligne_principale_Poste) 
    VALUES (' n', ' os', 'nature', ' hops', ' type', ' marque', ' modele', ' 69', ' ligne')
    Justement je doit insérer un ID_Poste. Donc si j'en ajoute pas malheureusement sa résout pas mon problème. Dans ce cas la je veux insérer un numéros de mon choix, il est bien clair que dans les autres cas ce champ n'est pas a compléter.

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 803
    Points : 34 074
    Points
    34 074
    Billets dans le blog
    14
    Par défaut
    Ben supprime l'auto-incrémentation de la table alors ! Tu ne peux pas avoir les deux en même temps il me semble.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Si on peut avec les requêtes SQL que j'ai posté au début mais je n'arrive pas a me servir de ces requêtes. Et s'il y a un champs auto incrémenté c'est pour répondre a un besoin. J'ai juste une exception et elle nécessite de passer outre l'auto incrémentation.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    et la doc ? http://msdn.microsoft.com/en-us/libr...v=sql.80).aspx

    C'est marqué comment faire

    edit: dans ce cas il faudrait peut etre déplacer ce topic dans la section Sql Serveur vu que le problème n'est pas Sql

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Bonjour,

    et la doc ? http://msdn.microsoft.com/en-us/libr...v=sql.80).aspx

    C'est marqué comment faire
    J'ai déjà vu cette doc avec plusieurs autre mais je ne comprend pas ou est mon erreur. J'ai essayer de plusieurs manières différente mais rien n'y fait sa ne marche pas.

  8. #8
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 174
    Points : 7 424
    Points
    7 424
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set identity_insert dbo.poste on
    insert into dbo.poste (id, nom) values (1, 'toto')
    set identity_insert dbo.poste off
    Ca DOIT marcher.

    Sinon, quelle est l'erreur ?

    Ben oui, c'est quoi l'erreur ?

    Ce serait pas un truc genre "violation de la clé primaire" par hasard ?
    Genre, t'aurais pas déjà un id = 10016 dans la table ?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set identity_insert dbo.poste on
    insert into dbo.poste (id, nom) values (1, 'toto')
    set identity_insert dbo.poste off
    Ca DOIT marcher.

    Sinon, quelle est l'erreur ?

    Ben oui, c'est quoi l'erreur ?

    Ce serait pas un truc genre "violation de la clé primaire" par hasard ?
    Genre, t'aurais pas déjà un id = 10016 dans la table ?
    Quand meme une erreur "violation de la clé primaire" j'aurais compris. Non l'erreur pour le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Use config_Bureau
    SET IDENTITY_INSERT [ config_Bureau . [ ID_Poste ] . ] dbo.Poste { ON }
    INSERT INTO dbo.Poste (ID_Poste, n_Poste, OS_Poste, nature_Poste, ID_clef_HOPS, type_Poste, marque_Poste, modele_Poste, Code_Regate, ligne_principale_Poste) VALUES ('10016', ' n', ' os', 'nature', ' hops', ' type', ' marque', ' modele', ' 69a', ' ligne')
    SET IDENTITY_INSERT [ config_Bureau . [ ID_Poste ] . ] dbo.Poste { OFF }
    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Msg*102, Niveau*15, État*1, Ligne*2
    Syntaxe incorrecte vers ']'.
    Msg*102, Niveau*15, État*1, Ligne*4
    Syntaxe incorrecte vers ']'.

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Ben oui, votre syntax est incorrecte.

    Essayez plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SET IDENTITY_INSERT [dbo].[Poste] ON
    etc.
    Jetez aussi un œil sur DBCC CHECKIDENT si vous n'insérez pas des identifiants exclusivement inférieurs au dernier provenant de l'auto incrémentation.

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 924
    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 924
    Points : 51 726
    Points
    51 726
    Billets dans le blog
    6
    Par défaut
    Il ne peut exister qu'un seul auto incrément IDENTITY par table. C'est pourquoi il ne faut préciser que le nom de la table et pas de nom de colonnes.

    La syntaxe est pourtant claire et lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    your TABLE name goes here
    Signifie que vous devez mettre un nom de table ! Pas un nom de colonne.

    A +

Discussions similaires

  1. Interface : Insertion avec un champs auto incrémenté
    Par amnay dans le forum ODI (ex-Sunopsis)
    Réponses: 7
    Dernier message: 17/04/2012, 02h27
  2. Réponses: 4
    Dernier message: 22/04/2011, 18h50
  3. Réponses: 2
    Dernier message: 11/02/2008, 22h47
  4. Réponses: 1
    Dernier message: 23/07/2007, 21h57
  5. Problème de mise à jour des champs Auto incrémentés avec VB6.
    Par NHenry dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/05/2007, 17h06

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