Avatar billede nicocarlos Nybegynder
13. september 2008 - 00:22 Der er 5 kommentarer og
1 løsning

mySQL lock/unlock

Hejsa.

Jeg vil høre hvordan man bedst kan løse problemet med at 2 personer kommer til at overskrive hinandens ændringer/beskeder i mySQL.

Lad os sige at jeg har en besked, som kan opdateres af flere brugere og når denne besked af åbnet af en bruger, så skal der ikke samtidig kunne laves ændringer i den af en anden bruger.

Jeg havde tænkt mig evt. at lave timestamp på den pågældende besked på f.eks. 10 min, hvis brugere ikke selv lukker (hvis brugeren selv lukker skal der selvfølgelig åbnes op med det samme).

Mit spørgsmål er så om dette er den bedste måde at gøre det på eller om man bør benytte lock/unlock. Eller hvad kan der evt. ellers gøres ved problemstillingen?

På forhånd tak
Avatar billede jakobdo Ekspert
13. september 2008 - 07:36 #1
Lock/unlock vil jo netop kunne lave den fejl, at der lukkes for tilgang, men koden crasher eller lign. og dermed er tilgangen lukket.
Ideen med at bruge et tidsstempel og så tjekke op i mod det, var umiddelbart også den løsning som jeg ville vælge, da den netop åbner sig selv igen, efter noget tid, hvis ikke brugeren/koden får åbnet igen.
Avatar billede jakobdo Ekspert
13. september 2008 - 07:40 #2
Men lock/unlock er måske alligevel løsningen.
Fandt lige denne:

If a client connection drops, the server releases table locks held by the client. If the client reconnects, the locks will no longer be in effect. In addition, if the client had an active transaction, the server rolls back the transaction upon disconnect, and if reconnect occurs, the new session begins with autocommit enabled. For this reason, clients may wish to disable auto-reconnect. With auto-reconnect in effect, the client is not notified if reconnect occurs but any table locks or current transaction will have been lost. With auto-reconnect disabled, if the connection drops, an error occurs for the next statement issued. The client can detect the error and take appropriate action such as reacquiring the locks or redoing the transaction. See Section 24.7.13, “Controlling Automatic Reconnect Behavior”.
Avatar billede olebole Juniormester
14. september 2008 - 14:27 #3
<ole>

Det kommer vel også meget an på, hvordan det administreres. Det er formodentlig ikke nok at låse tabellen, da den anden bruger så ikke ved, at alt det, han skriver, bliver slettet ved submit.

Du bliver nok nødt til at markere den pågældende post som låst, så man enten ikke kan åbne den for editering - eller i det mindste tydeligt viser, at der ikke kan opdateres i øjeblikket.

/mvh
</bole>
Avatar billede nicocarlos Nybegynder
18. september 2008 - 23:43 #4
Tak for input.

Jeg har tænkt mig at prøve Lock/unlock og lave lidt tests på det. Hvis det virker halv dårligt, så benytter jeg bare timestamp.

Olebole >> Ja, den skal selvfølgelig fremgå som låst, hvis en anden bruger tilgår den pågældende besked.

Smid gerne et svar
Avatar billede jakobdo Ekspert
19. september 2008 - 08:21 #5
Du får et svar!
Avatar billede jakobdo Ekspert
02. oktober 2008 - 15:35 #6
Takker for point.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester