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é.
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.
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());
SET IDENTITY_INSERT Student ON;
INSERT INTO Student (RegNo, Name, Address, CreatedTime) VALUES('2','calibio','newyark',GETDATE());
SET IDENTITY_INSERT Student OFF;
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
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.
Essayez de clarifier ce concept en le regardant.
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.