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 :

Insert ds une column identity


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut Insert ds une column identity
    Bonjour,

    J'ai une table qui contient une colone IDENTITY. Je voudrais pouvoir y inserer une ligne, mais en spécifiant explicitement la contenu de la column IDENTITY.

    Et évidemment ça marche pas (c'est assez logique). Y a-t-il une façon de contourner ce problème ?

    Pour info, je fais ceci sur table: TData et TArchievedData. Car il arrive qu'un utilisateur archive un peu trop vite c'est donné et je (méga-administrateur) peux alors les réactiver.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set identity_insert TaTable ON
    insert into TaTable (ID, col1, col2...) values(...))
    set identity_insert TaTable OFF
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut
    ça marche pas. C'est parce que je l'utilise ds un fetch ?

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    OPEN myCursor
    FETCH NEXT FROM myCursor INTO @param1,@param2 
    WHILE @@FETCH_STATUS = 0
    BEGIN
     SET IDENTITY_INSERT TData ON
     INSERT INTO TData VALUES(@param1,@param2)
     SET IDENTITY_INSERT TData OFF
     FETCH NEXT FROM myCursor INTO @param1,@param2  
    END
    CLOSE myCursor
    Message d'erreur:
    Error 8101: An explicit value for the identity column in table 'TData' can only be specified when a column list is used and IDENTOTY_INSERT is ON

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 116
    Par défaut
    je pense que tu as oublié un espace entre le nom de ta table et les mots clés "ON" et "OFF"

  5. #5
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut
    Non, c'est un faute de frappe. J'ai bien l'espace ds ma procedure SQL.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 116
    Par défaut
    mais est ce que @param1 ou @param2 correspondent au champs identity ?

  7. #7
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut
    @param1 = le champ IDENTITY. pas @param2

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 116
    Par défaut
    il existe une aide sur SQL server Query Analyser, qui explique ton problème, désolé pas trop le temps de le lire, mais si tu tapes "SET IDENTITY_INSERT " dans la zone recherché tu devrais trouver ton bonheur dans les "Remarques"

  9. #9
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut
    ok, merci pour ton aide. Je regarde.

  10. #10
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut
    Je trouve pas... Quelqu'un peut m'aider ?

    Pour info, je suis ds une procedure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE ActiveOneData(@IdentityId INT,@UserId INT,@TheDate DATETIME) AS
     
    SET IDENTITY_INSERT TData ON
     INSERT INTO TData VALUES(@IdentityId ,@TheDate,@UserId)
    SET IDENTITY_INSERT TData OFF
    GO

  11. #11
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 51
    Par défaut
    Citation Envoyé par Trahwn
    Je trouve pas... Quelqu'un peut m'aider ?

    Pour info, je suis ds une procedure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE ActiveOneData(@IdentityId INT,@UserId INT,@TheDate DATETIME) AS
     
    SET IDENTITY_INSERT TData ON
     INSERT INTO TData VALUES(@IdentityId ,@TheDate,@UserId)
    SET IDENTITY_INSERT TData OFF
    GO
    Le message d'erreur te dit qu'une autre condition pour faire ce type d'insertion est de spécifier la liste des colonnes que tu veux remplir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO TData(id,thedate,userid) VALUES(@IdentityId ,@TheDate,@UserId)

  12. #12
    Inactif  
    Inscrit en
    Mars 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 21
    Par défaut
    Citation Envoyé par Trahwn
    Error 8101: An explicit value for the identity column in table 'TData' can only be specified when a column list is used and IDENTOTY_INSERT is ON
    Y avait qu'à lire !!!

    Il faut spécifier le nom des colonnes ds la requete.
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SET INDENTITY_INSERT TData ON
      INSERT INTO TData (col1,col2) VALUES(val1,val2)
     SET INDENTITY_INSERT TData OFF
    [edit]waouw, on à eu le flash à 1min d'intervalle...[/edit]

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

Discussions similaires

  1. insert avec une colonne identity
    Par neufgirl dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/02/2009, 11h54
  2. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  3. [FLASH MX]Insertion d'une animation Flash
    Par San Soussy dans le forum Flash
    Réponses: 2
    Dernier message: 10/06/2004, 14h13
  4. [Date][SQL date][Format] insertion d'une heure
    Par goulime dans le forum JDBC
    Réponses: 11
    Dernier message: 26/01/2004, 11h38
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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