Autore Topic: Mysql Lock Table  (Letto 6238 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 919
    • Mostra profilo
Mysql Lock Table
« il: 02 Settembre 2025, 00:43:03 »
Ciao Raga
Ho la necessità di connettere più pc allo stesso database
Mi serve bloccare la Tabella quando un pc la sta usando per impedire che altri pc possano modificare quella tabella

questo è il codice con cui mi collego 
Codice: [Seleziona]
Dim sql As String
   Dim MyRSA As Result
   
   sql = "select * from azienda order by idazienda"
   MyRSA = MODMain.MyConn.Exec(sql)

Mi servirebbe

Codice: [Seleziona]
Dim sql As String
   Dim MyRSA As Result
   
   'Codice Lock Table  azienda   
   
   sql = "select * from azienda order by idazienda"
   MyRSA = MODMain.MyConn.Exec(sql)

   'Codice unlock Table azienda   


Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.288
  • Tonno verde
    • Mostra profilo
Re:Mysql Lock Table
« Risposta #1 il: 02 Settembre 2025, 10:10:13 »
Ti passo la traduzione di questa risposta di Minisini a Bengino qui:
https://lists.gambas-basic.org/pipermail/user/2008-May/019775.html
Codice: [Seleziona]
È possibile utilizzare una tabella per creare blocchi di database in questo modo:

1) Creare una tabella denominata 'LOCK'.

2) Questa tabella ha, ad esempio, un campo 'Nome'.

3) Questa tabella ha un indice -unique- su 'Nome'. In altre parole, rendere 'Nome' la chiave primaria
.

4) Per impostare un blocco, basta creare un record all'interno della tabella 'LOCK'. Se la creazione di
non è riuscita, significa che il blocco è stato impostato da un altro client. Quindi puoi
aspettare un po' e riprovare. In caso contrario, se la creazione ha esito positivo, si dispone del blocco e si può continuare.

5) Una volta che hai il blocco, crea il tuo record nell'altra tabella (con il campo
autoincrement), leggi l'ultimo campo autoincrement utilizzato con una richiesta SQL
, e così via...

6) Una volta terminato il processo, rilasciare il blocco distruggendo il record
creato in 3).

L'indice primario su LOCK garantisce che il blocco sia impostato in modo atomico.

Saluti,

--
Benoit Minisini

nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.288
  • Tonno verde
    • Mostra profilo
Re:Mysql Lock Table
« Risposta #2 il: 02 Settembre 2025, 11:37:08 »
Forse questo è un poco più moderno:
https://www.mrw.it/lez/mysql-gestire-lock-tabelle/

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 919
    • Mostra profilo
Re:Mysql Lock Table
« Risposta #3 il: 02 Settembre 2025, 23:33:10 »
Mi piace di più l'idea della tabella
da li posso anche fare in modo che appaiono messaggi sul pc che tenta di accedere

dici meglio una tabella nel database oppure un file testo sul Nas?
« Ultima modifica: 02 Settembre 2025, 23:34:04 da dex »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.288
  • Tonno verde
    • Mostra profilo
Re:Mysql Lock Table
« Risposta #4 il: 03 Settembre 2025, 10:48:09 »

dici meglio una tabella nel database oppure un file testo sul Nas?

Purtroppo su questo non posso aiutare, spero che Milio (o un suo discepolo  :) ) lo possa fare

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 919
    • Mostra profilo
Re:Mysql Lock Table
« Risposta #5 il: 03 Settembre 2025, 18:02:25 »
Posso fare entrambe le cose, le ho gia fatte per altri scopi.

Intendevo a livello risorse dato che verranno utilizzate spesso, è più conveniente usare un file testo d'appoggio oppure una tabella del database?