webForumDet fria alternativet

Primary Key fråga (MySQL)

4 svar · 1 079 visningar · startad av Yoghurt

YoghurtMedlem sedan dec. 200512 inlägg
#1

Hej,

Arbetar i dagsläget med ett affärssystem där man ska kunna köra flera företag på en och samma databas. Problemet jag har i dagsläget är att jag vill att vardera företag ska kunna skapa en faktura med idNummer 1 t.ex (Lagras som iID i databasen och det är primary key för fakturatabellen.) men detta går ju inte då en primary key ska vara unik.

Jag har dock ett till fält som heter iCompanyID och som alltid innehåller idnumret på det företag som lägger till en faktura. Vad jag skulle vilja åstadkomma är att koppla ihop dessa två fält. Se förklaring nedanför.

iID (Primary Key) iCompanyID (?)
1 1
2 1
1 2
2 2

Är detta möjligt att göra med mySQL eller är jag tvungen att göra någon hemmasnickrad lösning?

Daniel Öbrink

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Ja, det är fullt möjligt att skapa en sammansatt nyckel. Har du testat men fått felmeddelanden?

YoghurtMedlem sedan dec. 200512 inlägg
#3

Tack för svaret!
Har skapat en sammansatt (PRIMARY) nyckel nu för iID och iCompanyID, jag får det dock inte att fungera helt som jag vill.
Jag har satt "auto_increment" på fältet iID och värdet för iCompanyID sätter jag själv när jag lägger in en ny faktura i systemet. Som det blir nu så blir det fortfarande så att iID går i nummerordning oavsett vilket värde som sätts för iCompanyID och det blir då som exemplet nedan,

iID (Primary Key) iCompanyID (?)
1 1
2 1
3 2
4 2

Jag vill att det bli som Exemplet i ovanför där iID börjar på 1 för varje unikt iCompanyID utan att jag själv ska behöva räkna fram nästa iID vid INSERT (För att minimera att det blir fel)

Går detta att lösa på något sätt?

Peter SMedlem sedan dec. 20025 483 inlägg
#4

För bl.a. MyISAM-tabeller skall det fungera så som du gör. Se http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

YoghurtMedlem sedan dec. 200512 inlägg
#5

Tack så mycket Peter för länken!
Fick det nu att fungera då iCompanyID helt enkelt skulle ligga först vilket jag tidigare inte hade tänkt på.

255 ms totalt · 3 externa anrop · v20260731065814-full.30151723
123 ms — hämta forumlista (db)
125 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)