Avatar billede zephyr Nybegynder
26. februar 2002 - 15:07 Der er 10 kommentarer og
2 løsninger

Primary key

Hej.. Når jeg prøver på at lave mit int felt til Primary key, med Identity til Yes... så får jeg følgende fejl:

'Abonnement' table
- Unable to create index 'PK_Abonnement'. 
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1. Most significant primary key is '167'.
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors.
[Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.



Har i nogen ide om hvorfor?
Avatar billede bennytordrup Nybegynder
26. februar 2002 - 15:13 #1
Du har flere poster, hvor de(t) felt(er), du vil lave til unikt index, er ens.
Avatar billede z42cool Nybegynder
26. februar 2002 - 15:14 #2
Den kolonne du prøver at lave til primary key indeholder værdien 1 i to forskellige rækker. Dette er naturligvis ikke tilladt da værdierne i en primary key jo netop skal være unikke!
Avatar billede bennytordrup Nybegynder
26. februar 2002 - 15:14 #3
prøv at lave følgende:

select <ØnsketNøgleFelt>, Count(*)
from Abonnement
group by <ØnsketNøgleFelt>
order by 2 desc

Det vil give dig antal poster per ønsket nøgle.

Hvis du har flere felter i Ønsket Nøgle, skal du have dem alle med.
Avatar billede zephyr Nybegynder
28. februar 2002 - 15:31 #4
Hmn Benny, når jeg bruger din statement får jeg 2 ved alle sammen.. Nu jeg ser efter kan jeg egentlig godt se at der er duplikater nogle steder. Men prøver jeg på at slette den ene får jeg beskeden 'Could not delete row. Too many rows were affected' eller noget i den retning.. :-(
Kan jeg ikke lave den til en Primary key, hvor duplikaterne så bare bliver fjernet??
Avatar billede bennytordrup Nybegynder
28. februar 2002 - 15:34 #5
Du er nødt til at få slettet de duplikaterne før, der kan laved en primary key

Alternativet er at tage et felt mere med i Primary Key, hvis du har 2 ved dem alle.
Avatar billede zephyr Nybegynder
28. februar 2002 - 15:42 #6
Yeps, det var også det jeg ville prøve på. Men jeg får denne fejl, når jeg prøver på at slette en duplikat: "Key column information is insufficient or incorrect. Too many rows were affected by update."
Avatar billede bennytordrup Nybegynder
28. februar 2002 - 15:44 #7
Hvordan vil du slette dem?
Avatar billede zephyr Nybegynder
28. februar 2002 - 15:45 #8
Jeg højreklikker på rowet i Enterprise Manager, og trykker Delete?
Avatar billede bennytordrup Nybegynder
28. februar 2002 - 15:46 #9
Direkte fra min forespørgsel?
Avatar billede zephyr Nybegynder
28. februar 2002 - 15:48 #10
Hvis jeg prøver på at gøre det fra din forespørgel får jeg fejlen: "Cannot edit this cell."
Avatar billede bennytordrup Nybegynder
28. februar 2002 - 15:49 #11
Hvor mange poster har du i alt? Hvor mange felter? Kan du lave nogle unikke nøgler på noget overhovedet?
Avatar billede zephyr Nybegynder
28. februar 2002 - 15:52 #12
Nope, det ser ikke sådan ud.. Men jeg har en anden database på samme SQL Server hvor jeg kan gøre det uden problemer, og de er meget ens.. Kan jeg evt. ringe til dig?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester