Originariamente postato da gian1308
...E i conflitti di aggiornamento? Una postazione edita un record, un'altra edita lo stesso record. La seconda modifica e salva i dati prima delle postazione 1: come viene gestito (con quali componenti, se ce ne sono) la diversita dei dati che la postazione 1 ha letto e che adesso vuole modificare?...
Per i dettagli d'implementazione sistemistica (parametri d'installazione sia di Interbase, sia di BDE) e le singole istruzioni, non posso aiutarti. Tieni presente che io non sono un sistemista ne un programmatore. Ti consiglio, quindi, di navigare sui vari forum (questo compreso). Ne trovi alcuni specializzati per Delphi ed Interbase.

Per la gestione dei conflitti, non esiste software che te li gestisca. Vale solo l'accademia. Esistono algoritmi tra cui puoi scegliere in funzione di ciò che ti serve per la specifica situazione ed implementare.

Le primitive si limitano a consentirti di bloccare, chiedere il commit, rifiutarlo. Inoltre hai i trap per gli errori.

Una disquisizione sui diversi algoritmi porterebbe via un intero libro. Ti accenno brevemente:

1) Lock classico di record
Blocchi il record che vuoi modificare (o il gruppo intero), Modifichi, salvi, sblocchi.

2) Aggiornamento senza lock
Leggi il record senza bloccare, due copie in memoria, modifichi una, blocchi, testi se il record su disco è ancora uguale alla seconda copia, salvi, sblocchi.

3) Apri una transazione, fai ciò che vuoi, chiudi la transazione (lock implicito). Il sistema se non vi sono conflitti procede, diversamente ti da un alert che puoi "trappare" per poi decidere cosa fare.

Ovviamente vi è da gestire il cosa fare se tenti un lock (per uno qualunque dei casi visti sopra) e non riesci. Possibilità:
- tentativo infinito di lock (con rischio di dead-lock)
- tentativo per x volte di lock e poi errore definitivo
- nessun tentativo, errore alla prima volta (lock ottimistico).

Nel caso in cui, per la seconda soluzione, trovi che qualcuno ha modificato i dati mentre anche tu li modificavi (supponendo di non aver dato il lock), puoi:
- rifiutare la seconda modifica (per tradizione non si cancella mai la prima)
- mostri i dati all'utente e gli chiedi che fare
- se le modifiche sono su campi diversi e non scattano errori sull'integrità dei campi in relazione alle business roule (i cosiddetti Constraint dei database), fai una fusione.

Il Delphi ha diversi livelli di librerie. Le più basse ti consentono di gestire tutto ciò che ti ho descritto, ma ti legano al motore relazionale scelto (in questo caso Interbase). Le più alte sono più semplici ma ti forzano all'uso del lock implicito (prima o dopo l'update, a seconda del livello di isolamento scelto sul BDE).