Newsgroup: it.comp.lang.delphi
Titolo: Lock/Unlock

Ciao cugini (visto che uso il c++ builder),
 volevo sapere per cortesia due cose(naturlamente accetto delphi):
1) Come si fa il lock/unlock di un record con Interbase?
2) Quando avete creato un database con interbase, lo installate al
cliente, dopo alcuni mesi modificate (trigger,sp, o semplicemte
aggiungete qualche campo) come fate poi aggiornare il tutto dal cliente
senza fargli perdere i dati naturalmente?
Vi Ringrazio
Devis
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 senza fargli perdere i dati naturalmente?
Se il database è normalizzato in modo corretto, aggiungere campi non
comporta alcunche: basta fare alter table add...
Se vai pero' un campo nel quale metti indirizzo, numero civico, e cap, un
automatismo per separare questi dati non è fattibile.
Bye
AS

   Se viene fatto internamente(che è la cosa migliore) come faccio a
capire
   che il record xy della tabella z è bloccato(a livello client
naturalmente)?
   Quindi nel scondo punto se non ho capito male in caso di sp, triggers
devo modificare
   tutto a mano dal cliente?
   Ciao


    tutto a mano dal cliente?
Queste cose puo farle direttamente il cliente, se gli mandi gli script via
email e lui li esegue in qualche modo, tipo IbConsole o robbba simile.
Ma questo vale x tutti i db!
Bye
AS

Come automatismo, non mi sembra che ib (ma forse anche gli altri..)
permettano di sapere se un record è bloccato
Mi hai messo la pulce nell'orecchio: cercehro qualcosa... :))
Beh almeno lanceranno un'eccezione "sti" db ;-)
Queste cose puo farle direttamente il cliente, se gli mandi gli script
via
 email e lui li esegue in qualche modo, tipo IbConsole o robbba simile.
 Ma questo vale x tutti i db!
Ok ultimo aiuto poi, "giurin giureta" ti lascio in pace. Come faccio
fare uno script che capisca se esiste O MENO una trigger MARIO (QUINDI
CREATE TRIGGER...) O
 INVECE (ALTER TRIGGER)
Bye


  INVECE (ALTER TRIGGER)
A differenza di papa Oracle che supporta CREATE OR ALTER, IB 'sta cosa non
la supporta.
L'unico modo credo sia tentare un drop, e poi lanciare una create.
Magari facendo qualche select sulle tabelle di sistema del db riesci ad
avere questa notizia, ma io preferisco non scendere a  questo livello.
Bye
AS

 Se tutte le rotture fossero come queste, ci metteri la firma...! ;-)
  Sniff troppo buono...
Ok mi rimbocco le maniche, e vediamo se il mio vecchio c++ mi "aiuterà"
nel caso ci riesca ti farò sapere sempre se tu lo voglia.
Ciao


 AS
Ciao.
Mimmo.

 Mi hai messo la pulce nell'orecchio: cercehro qualcosa... :))
UPDATE TABELLA
SET CAMPOCHIAVE='Valore del record da testare';
COMMIT;
Il record non cambia, se ti viene dato un errore il record è in uso...
Ciao.
Mimmo.

 UPDATE TABELLA
 SET CAMPOCHIAVE='Valore del record da testare';
 COMMIT;
 Il record non cambia, se ti viene dato un errore il record č in uso...
  Ok grazie veramente.... ma approfittandone si puň in qualche modo
avere
 il nome  utente o qual cosa del genere che ha "bloccato" il record, o
bisogna
 costruirsi qualche cosa ad hoc.


 Il record non cambia, se ti viene dato un errore il record è in uso...
Su quale db?
Solo ib o anche altri?
E poi, sarebbe da verificare la velocita se nella tabella hai + di 500.000
records.
Bye
AS

  costruirsi qualche cosa ad hoc.
Esistono le costanti USER e ROLE da usare nelle SELECT.
Nei trigger before riempi il campo con il valore della costante. Se hai 
piů utenti che hanno lo stessa USER NAME non riesci ad identificarli, ma 
se sono effettivamente equiparabili non ha importanza.
Per i dettagli leggiti sul sito della FireBird le spiegazioni del 
funzionamento del sistema delle transazioni.
Ciao.
Mimmo.

 records.
Credo che IB, nel suo sistema di gestione, tenga una specie di mappa dei 
record in uso e faccia i test su quelli prima di accedere al DB vero e 
proprio. Bisognerebbe chiedere a Bill Karvin o Ann Harrison...
Ad ogni modo, nel sito della IBPhoenix dovrebbe esserci ogni risposta 
tecnica (molto più che sul sito della Borland), d'altra parte il codice 
lo hanno scritto loro...
http://www.ibphoenix.com/ibp_document.html
Tra cui, per avere un'idea generale
http://www.ibphoenix.com/ibp_assumptions.html
http://www.ibphoenix.com/ibp_config.html
ed il knoledgebase:
http://www.ibphoenix.com/netfradb/search.nfs
utile per determinare cosa IB intende per transazione:
http://www.ibphoenix.com/netfradb/search.nfs?a=knowledgebase&l=;KNOWLEDGEBASE.PAGES;ID=%27377%27
Ciao.
Mimmo.