FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Man måste också tänka på att när man lägger upp den första rapporten för en kund så blir max på rapportid NULL och man måste sätta det till 1. i SQL-server finns en funktion som heter ISNULL() som man kan använda vet inte om det finns en motsvarande i MySQL (kollade och det finns syntax: SELECT ISNULL(field,0) FROM TABLE). Förslag till Kod: Kod:
INSERT INTO Rapporter (RapportId,AnstalldId,Arbetade_timmar) SELECT ISNULL(MAX(RapportId),1),INSERT_ID(),5 FROM Rapporter WHERE AnstalldId=INSERT_ID(); Mna kan gå ytterligare ett steg och använda en naturlig PK även i kundtabellen med personnr eller orgnr så får du bättre datakvalitet även där (risken för dubletter minimeras). Att slentrianmässigt använda autoinkrement skapar en databas där man har noll koll på dubbletter. Följaktligen komme rmånga dubbletetr att uppstå med tiden= sämre datakvalitet. Ett generellt råd är att undvika autoinkrement så långt det är möjligt, använd istället naturliga primärnycklar i så stor utsträckning som möjligt, kombinera kolumner upp till ca 5-6 kolumner till PK vid behov. Först när det blir fler kolumner i PK ska man överväga att gå över till synttiska PK (autoinkrement är en form av syntetisk PK). Senast redigerad av Conny Westh den 2010-06-18 klockan 10:50 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Jag håller på med en liknande lösning, och precis det du frågar om finns i MySQL, eller åtminstone i MyISAM-motorn.
I din tabell har du två kolumner: AnstalldId och RapportId. Skapa sedan en PRIMARY KEY bestående av båda dessa kolumner Kod:
PRIMARY KEY (AnstalldId, RapportId) Då kommer MySQL/MyISAM att ha egna auto_increment-värden för varje AnstalldId. Du behöver då heller inte lägga in några värden för detta i SQL-frågan, utan sätt RapportId till NULL så fixar MySQL det själv. Mer info: http://dev.mysql.com/doc/refman/5.0/...increment.html (tredje stycket) |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Citat:
|
||
![]() |
![]() |
Svara |
|
|