La Violation de la contrainte de CLÉ PRIMAIRE 'PK_Address'. etc...ce que je fais mal?
Toute la soirée. Je suis assez nouveau à l' SQL
mais ont été à faire un peu de faire l'idiot. Je suis en suivant un guide que j'ai trouvé en ligne pour apprendre SQL
en 21 jours et je vais avoir un peu de mal à déterminer ce que l'erreur que je reçois est à l'origine.
Je suis en train de INSERT
des données dans une table existante. La Clé Primaire de cette table est AddressID
. Les données que je suis en train d'introduire dans le code ci-dessous:
INSERT INTO [dbo].[Address]
(AddressID,Street,City,State,ZipCode)
VALUES
(1,'2400 Broadway','New York','NY',11201),
(2,'320 21st Street','Atlanta','GA',303),
(3,'439 Skyline Blvd','Seattle','WA',98101),
(4,'56 Park Avenue','Dallas','TX',75201);
GO
Je reçois cette erreur:
Msg 2627, Niveau 14, État 1, Ligne 2. Violation de CLÉ PRIMAIRE
contrainte "PK_Address'. Impossible d'insérer une clé en double dans l'objet
'dbo.Adresse". La valeur de clé en double est (1).
J'ai essayé à peu près tout je pense, mais je n'arrive pas à obtenir mon tableau à jour. Mes noms de colonne en vertu de la INSERT INTO
partie sont corrects et mes VALEURS sont également correctes. Je l'ai fait savoir que je peux utiliser un seul INSERT
déclaration de récupérer mes données dans le tableau. À l'origine, j'ai été à l'aide de 4 états distincts.
Ce que je fais mal?
OriginalL'auteur Progunator | 2015-05-27
Vous devez vous connecter pour publier un commentaire.
Dans ce cas, je pense qu'il est sûr de laisser la base de données, choisissez la clé primaire en ne spécifiant pas. Il y a probablement déjà des données dans la table.
OriginalL'auteur
À partir du message d'erreur, il est très clair que déjà
AddressID = 1
existe pas dans la table, parce que vous avez unprimary key
surAddressID
vous ne pouvez pas insérer des valeurs en double.Essayer cette requête à insérer dans le tableau
Si
addressid
colonnes aidentity
bien puis retirez leaddressid
colonne deinsert
liste de colonnes etselect
liste.OriginalL'auteur Pரதீப்
Ce que vous faire de mal, c'est:
AddressId
(1) dans votre tableauAddress
table.Clé primaire doit être unique. Vous ne pouvez pas insérer des valeurs en double dans le
primary key
colonne.Ce que vous pouvez probablement le faire est:
update
la valeur existante etinsert
les nouvelles valeurs. Cela signifie que la mise à jour de la ligne avecAddressId
1 et insérer de nouvelles lignes avec de nouveaux AddressIds.C'est mieux de laisser le
Sql Server
décider sur votre clé primaire de la valeur par la création de "colonne d'identité'. Vous pouvez créer de la colonne d'identité lors de la création d'un tableau comme suit:Veuillez noter que, si vous avez créé un tableau avec
Idenity column
, vous n'avez pas besoin de fournir des valeurs au cours deinsert
opération, car Sql Server implicitement crée et insère ces valeurs pour vous.OriginalL'auteur ANewGuyInTown
Clés primaires doivent être uniques. Si AddressID est votre clé primaire ne peut pas avoir deux lignes de votre table qui ont le même AddressID nombre. Les Clés primaires sont généralement mis automatiquement, donc vous n'avez pas à définir vous-même.
Pense de la Clé Primaire comme un identificateur unique pour chaque ligne. Le double de la clé d'erreur vous indique que vous avez déjà une ligne dans la table des adresses qui a un AddressID valeur de 1. Pour éviter ces erreurs, vous devez configurer votre colonne AddressID à l'IDENTITÉ et vous inquiétez pas sur la définition de la valeur. Essayez de l'insérer vos dossiers, sans réglage de la AddressID. Quelque chose comme ceci:
OriginalL'auteur LyleK