04. september 2003 - 15:44Der er
18 kommentarer og 1 løsning
Låse record?
Hej,
Indholdet på mit site ligger alt sammen i en tabel. De enkelte sider kan man via DHTML Editing komponentet fra Microsoft redigere i, nu er det så bare at jeg vil sikre mig mod at to brugere samtidigt redigerer i den samme side.
Jeg har prøvet at sætte LockType til adLockPessimistic, men der kunne andre brugere sagtens åbne recorden, så den ser ikke ud til at du.
Det er en MySQL db, så jeg kunne måske umiddelbart forestille mig at man kunne bruge LOCK TABLES, men er ikke helt sikker på den duer da jo kun er en enkelt record der skal låses og ikke hele tabellen.
En anden løsning var at lave et status felt i min content tabel og så sætte det til 0 når en bruger redigerer i en side, og derved forhindre andre i at åbne recorden hvis status feltet er 0, men så støder jeg ind i et problem hvis den brugers (der redigerer siden) session timer ud, for så er recorden jo låst, og det går ikke.
Der er ikke nogen der er indexeret nej, men det kan de da muligvis blive..
mmm, det er bare en simpel strSelectContentSQL = "SELECT content.content FROM content WHERE id = " & intId & "" Set objContentRS = Conn.Execute(strSelectContentSQL) der åbner mit recordset (noget i den dur i hvert fald).
Brug dette efter at du har lavet en recordset: RS.open strSQL, conn, adOpenKeySet, adLockOptimistic, adCmdTable adOpenKeySet er afgørende her, det er en smage sag hvis du bruger adLockOptimistic eller adLockPessimistic.
Du skal ha et Autonummer felt som ikke accepter dubletter. Om det er primary key eller ej betyder intet.
så bruger du dette methode: ... RS.AddNew ... RS.Update
Dette virker med msAccess, har ikke prøvet MySQL engin.
Hmm, men så har brugeren jo ikke mulighed for at lave nogle ændringer? RS.AddNew og RS.Update vil jo blive kaldt før brugeren har lavet nogle ændringer og trykket gem..
I har begge helt ret, men hvis alle indlæg (selv dem der er små 4 år gamle) skal punkes for evt. fejl.
Hvis du nu derimod spurgte pænt kunne det jo være jeg kunne huske løsningen..
Nuvel, det var vist noget i retning af følgende procedure:
- Den record der skal redigeres låses ved at sætte et felt til 1 (0 = åben, 1 = låst) - I en anden tabel indsættes en record der angiver hvornår rækken blev låst - Når en bruger efterfølgende prøver at redigere recorden checkes om den er låst, og hvis ja, hvornår den blev låst. Hvis det er over X-antal minutter siden låses den automatisk op. - Ud over dette kan man brugerne også tvinge en record åben.
Edit: I har begge helt ret, men hvis alle indlæg (selv dem der er små 4 år gamle) skal punkes for evt. fejl får du små travlt..
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.