Avatar billede jimgordon Nybegynder
12. september 2008 - 21:05 Der er 7 kommentarer og
1 løsning

To felter skal være unikke tilsammen

Har to kolonner der skal være unikke tilsammen i en tabel. Dvs. de to værdier må kun forekomme eengang i kombination i sammen tabel.

x 1
x 2
y 1
y 2
x 2 (forkert)

Ved hvor man lavet et felt unikt. Men har to felter der til sammen skal være unik. DB er designet så jeg kan ikke indføre nye primærnøgler.

Nogle forslag
Avatar billede jensgram Nybegynder
12. september 2008 - 21:12 #1
Kender ikke noget til MS SQL, men kan det ikke være UNIQUE(felt1, felt2) ???
Avatar billede Syska Mester
12. september 2008 - 21:24 #2
/****** Object:  Index [PK_Alliances]    Script Date: 09/12/2008 21:20:36 ******/
ALTER TABLE [dbo].[Alliances] ADD  CONSTRAINT [PK_Alliances] PRIMARY KEY CLUSTERED
(
    [SID] ASC,
    [AID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 100) ON [PRIMARY]
GO

Taget fra et af mine egne UNIQUE indexes som går over 2 columns
Avatar billede kalp Novice
13. september 2008 - 00:05 #3
og hvorfor kan du ikke indføre nye primære nøgler?
så må det være fordi der i forvejen i den tabel er data, som ikke vil være gyldigt fordi de tilsammen ikke er unikke.

det giver da mest mening, at lave de 2 kolonner til en samlet nøgle.
Avatar billede jimgordon Nybegynder
13. september 2008 - 08:52 #4
Tak for input fandt ud af hvordan man lave et unik index på to kolonner.

>>kalp: Vil det ikke give problemer med relationer til andre tabeller i db at tilføje nye primærnøgler. Har tre kolonner:

IdCOl, unikCol1, unikCol2 (hvor de to sidste skal være unikke tilsammen).
IdCol er primærnøgle autoinkrementeret med en. UnikCol1 er en fremmednøgle. Hvad vil der ske med denne relation, hvis den blev lavet til en primærnøgle. Kan den være både primær og fremmednøgle på eengang?

tabel 1:
IdCOlx (primærnøgle, auto vokser med 1), enkol

tabel 2:
IdCOl (primærnøgle, auto vokser med 1), IdCOlx, unikCol2

tabel 1 og 2 linkes sammen via iDColx. Er det tilladt at have alle tre kolonner som primærnøgle i det tilfælde?

I må gerne smide nogle svar hvis I vil have point.
Avatar billede jimgordon Nybegynder
13. september 2008 - 09:25 #5
Lavede et test og man kan godt have en sammensat primærnøgle, hvor det ene felt også er en fremmednøgle. Det virker som den rigtige løsning, da det bedre reflektere databasens logiske opbygning, fremfor at dumpe nogle unikke constraint ned.

I må gerne smide nogle svar hvis I vil have point.
Avatar billede jensgram Nybegynder
13. september 2008 - 09:26 #6
Ellers tak - jeg bidrog vist ikke med det store :)
Avatar billede kalp Novice
13. september 2008 - 11:23 #7
:-)
Det bedste er selvfølgelig og lave flere kolonner til en samlet primærnøgle hvis det er sådan det skal fungerer - så vil data'en altid stemme korrekt:)

men godt du fik løst det;)
Avatar billede arne_v Ekspert
13. september 2008 - 17:28 #8
Normalt vil man bruge syntaxen:

CREATE UNIQUE INDEX indexnavn ON tabelnavn(kol1,kol2)

hvis man vil tilfoeje et unikt index paa 2 kolonner via ren SQL som boer virke paa
de fleste databaser.
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

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