petterg Skrevet 12. juli 2013 Del Skrevet 12. juli 2013 Lar det seg gjøre å begrense hva som kan legges inn i en tabell ved å flere unike kombinasjoner av verdier? Et klassisk eksempel, mange-til-mange-sammenheng. En ordre har mange varer, en vare kan stå på mange ordre. Den klassiske løsningen er en tabell 'ordrelinje' bestående av kolonnene ordreId og vareId (og antall, rabatt, og andre ubetydelige kollonner i denne sammenhengen.). Så den spesielle vrien - en vare kan kun stå en gang på en gitt ordre og rekkefølgen på ordrelinjene har en betydning. Altså har tabellen ordrelinje følgende kollonner av betydning: ordreId, vareId, linjenummer. For ordreId=1 vil man f.eks ha vareId=1000 på linjenummer=1, vareId=1021 på linjenummer=2, osv. Saken her er da at man ønsker at kombinasjonen av ordreId og vareId skal være unik. Og en ordre kan jo bare ha en linje=1, en linje=2, osv. Altså ønsker man også at kombinasjonen av ordreId og linjenummer også skal være unik. Hvordan kan man (hvis mulig) definere tabellen slik at den får to kombinasjoner av kombinerte unique? Lenke til kommentar
GeirGrusom Skrevet 12. juli 2013 Del Skrevet 12. juli 2013 create table VareOrdre ( VareId int foreign key references Vare(Id), OrdreId int foreign key references Ordre(Id) constraint pk_vare_ordre primary key(VareId, OrdreId) ) Lenke til kommentar
petterg Skrevet 12. juli 2013 Forfatter Del Skrevet 12. juli 2013 (endret) Det er den ene kombinasjonen. Får man til den andre samtidig? Edit: Hvis det ikke kom klart nok frem. Det jeg prøver på er dette: create table UsersLists ( OrdreId int not null, VareId int not null, Linjenr int not null constraint u_Vare unique (OrdreId, VareId) constraint u_Linje unique (OrdreId, Linjenr) ) men 2x unique er ikke lov. Heller ikke primary key + unique Endret 12. juli 2013 av petterg Lenke til kommentar
GeirGrusom Skrevet 12. juli 2013 Del Skrevet 12. juli 2013 Det holder vel å bare ha unik på vareid og ordreid? Hvis du har linjenummerering kan du kalle dette et "ordrehint" og bare rett og slett sortere etter dette fremfor å ha det som en constraint. Lenke til kommentar
petterg Skrevet 12. juli 2013 Forfatter Del Skrevet 12. juli 2013 Joa, det er bare at i dette spesielle tilfellet er linjenummereringen viktig. Så viktig at jeg heller setter unique på ordreid+linjenummer enn på vareid, hvis det ikke lar seg gjøre å få til begge. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå