06. november 2002 - 12:40Der er
9 kommentarer og 1 løsning
Er her flerebrugerproblemer?
vi har en database med ordrer og tilhørende ordrelinier. Ordrenummeret bliver fremmednøgle i ordrelinier.
Når vi gemmer en ordre sker der følgende: 1. gem stamdata i ordre (opretter ny ordre med ny ordrenummer. 2. Hent højeste ordenummer (vi går ud fra at det kommer fra den ordre vi lige har oprettet) 3. Gem ordrelinier fra session med ordrenummeret som fremmednøgle.
Kan der opstå følgende situation når flere brugere prøver på at gemme en ordre samtidigt?
Bruger1 Bruger2 Skriv ordre (n) skriv ordre (n+1) Hent højeste nr =(n+1)??? Hent højeste nr =(n+1)??? Gem alle linier med (n+1) Gem alle linier med (n+1)
Resultatet ville så være at bruger1´s ordrelinier bliver gemt sammen med bruger 2´s ordre!!!
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Prøv at oprette en ny tabel der kun indeholder ordrenummer. Tabellen skal så bruges til at angive hvilket nummer der bruges nu, og dette nummer hentes så over til den aktuelle bruger. Den næste bruger vil så få et højere nummer.
Problemet skyldes at tabellen med den nye ordre ikke opdateres før brugeren går til en ny post eller lukker tabellen. Derfor vil en bruger, der går ind i tabellen efter den første bruger, men inden den første bruger har gemt sin ordre, få samme ordrenummer.
Med en separat ordrenummertabel, der opdateres umiddelbart efter nummeret er udtaget undgås dette problem. Du kan selvfølgelig også lave en programmæssig opdatering af posten i tabellen INDEN brugeren har gemt ordren, men så risikerer du at der ligger en række tomme ordre (fra brugere der fortryder undervejs). Selvfølgelig vil numrene blive udtaget i odrenummertabellen, men der fylder de jo ikke så meget.
terry>> thinking about it, in the "ordrenummertabel" the ordrenummer would be primary key. The database would allow another user to read the number, but not allow any other user to write an already existing number back.
who says its a primary key in "ordrenummertabel"? If I understood superjaps answer correctly he is only using ONE record which gets updated directlt ater it is read. NOTE, superjaps answer WILL WORK but only if you make sure that the record is locked when it is read and UNTIL it is re-written. Not sure which methods you use when reading records in ASP but the problem is the same no matter.
i think i´ll let the table grow and use the primary key. That will always ensure there is a new number.
Synes godt om
Ny brugerNybegynder
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.