web-dev-qa-db-fra.com

Comment insérer une valeur dans la colonne de clé primaire dans SQL Server?

insert into Student 
values('1', 'joedio', 'newyark', GETDATE())

Je reçois ce message d'erreur en essayant d'exécuter ce SQL:

Une valeur explicite pour la colonne d'identité de la table 'Student' ne peut être spécifiée que lorsqu'une liste de colonnes est utilisée et que IDENTITY_INSERT est activé.

4
divikdiya

Si vous voulez insérer une clé primaire par requête, même s'il s'agit d'une incrémentation automatique, vous devez définir IDENTITY_INSERT ON comme ci-dessous, cela vous permettra d'insérer une valeur unique par requête:

SET IDENTITY_INSERT [Tablename] ON;

Votre requête sera maintenant:

SET IDENTITY_INSERT Student ON;

INSERT INTO Student VALUES('1','joedio','newyark',GETDATE());

SET IDENTITY_INSERT Student OFF;

Si vous souhaitez que SQL le gère lui-même, il est défini par défaut sur IDENTITY_INSERT OFF et Incrémentation automatique est défini, ce qui signifie qu'à chaque insertion, la nouvelle valeur est affectée à cette colonne PK.

Mieux vaut exécuter avec le paramètre par défaut SET IDENTITY_INSERT Student OFF, car la possibilité d'insertion manuelle permet d'insérer une valeur dupliquée et une erreur sera générée.

Si votre table a Identity Column, alors vous devez mentionner toutes les autres colonnes lors de l'insertion.

C'est juste pour l'échantillon:

INSERT INTO Student (ID, Name, State, Date) VALUES('1','joedio','newyark',GETDATE())

Si la première colonne est Identity, ignorez la valeur lors de l'insertion:

INSERT INTO Student (Name, State, Date) VALUES('joedio','newyark',GETDATE())

Et si vous souhaitez insérer des valeurs dans une colonne d'identité dans SQL Server

SET IDENTITY_INSERT IdentityTable ON

INSERT INTO Student (ID, Name, State, Date) VALUES('1','joedio','newyark',GETDATE())

SET IDENTITY_INSERT IdentityTable OFF

Et consultez également le lien Comment insérer des valeurs dans une colonne d'identité dans SQL Server pour plus d'informations.

1
DineshDB
  1. Dans le serveur SQL lorsque la colonne ID est incrémentée automatiquement et que vous transmettez ID

SI PAS EXISTE (SELECT * FROM Student WHERE ID = 1) PUIS

SET IDENTITY_INSERT Student ON;

INSERT INTO Student (ID, Name, State, Date) VALUES('1','joedio','newyark',GETDATE())

SET IDENTITY_INSERT Student OFF;

END

2.Serveur SQL lorsque la colonne ID est incrémentée automatiquement et que vous ne transmettez pas ID

INSERT INTO Student (Name, State, Date) VALUES('joedio','newyark',GETDATE())

3.Dans mon utilisation SQL peut utiliser

INSERT IGNORE INTO Student (ID, Name, State, Date) VALUES('1','joedio','newyark',GETDATE());

OU 

INSERT IGNORE INTO Student (Name, State, Date) VALUES('joedio','newyark',GETDATE());
0
Vivektwr29
SET IDENTITY_INSERT Student ON;

INSERT INTO Student (RegNo, Name, Address, CreatedTime) VALUES('2','calibio','newyark',GETDATE());

SET IDENTITY_INSERT Student OFF;
0
divikdiya

ESSAYEZ CECI: Si vous voulez vraiment insérer une valeur dans la colonne IDENTITY, utilisez l'une des réponses données en tant que 

SET IDENTITY_INSERT [Tablename] ON;
INSERT INTO [Tablename]..........
SET IDENTITY_INSERT [Tablename] OFF;

Sinon, éliminez simplement l'erreur en excluant la première valeur de la variable values

INSERT INTO Student --No need to add column definition if you are inserting rest of all
VALUES('joedio', 'newyark', GETDATE()) --Error Free
0
Susang

IDENTITY_INSERT permet d'insérer des valeurs explicites dans la colonne d'identité d'une table . Utilisez cette requête et définissez IDENTITY_INSERT sur la table 'on'.

SET IDENTITY_INSERT Student ON

Remarque: à tout moment, la propriété IDENTITY_INSERT ne peut être définie que sur ON dans une seule table d'une session.

0
usr_11

Essayez de clarifier ce concept en le regardant.

IDENTITÉ (Propriété)

Et après avoir mentionné la clé primaire en tant qu'identité, vous n'avez pas besoin de passer un argument pour déterminer sa valeur. Sa valeur sera automatiquement incrémentée.

0
Farrukh Sarmad