Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    DB SQLite Inserimento record in più tabelle con un'unica Select...Exec

    Sto affrontando, In ambiente Linux Ubuntu, con un mio programma, in costruzione ed in linguaggio Lazarus Free Pascal, l'inserimento di record in alcune tabelle di un DB SQlite3, utlizzando le librerie ZEOS.


    Non potendo comandare il COMMIT manuale, devo affidarmi al paramtero "AutoCommit" dell'oggetto ZConnection.


    Se inserisco un record alla volta in ciascuna tabella interessata, dopo l'inserimento di un record nella prima tabella, il COMMIT è già stato eseguito da ZEOS. Perciò, in caso di Errore durante l'inserimento record nella seconda tabella, non potrei più eseguire il RollBack del record registrato prima.

    La difficoltà potrebbe essere superata se fosse possibilie creare una sola SELECT...EXEC con la quale scrivere in tutte le tabelle interessate i nuovi dati.


    In scrittura non ho mai realizzato niente del genere e non so nemmeno se sia fattibile.

    Aspetto suggerimenti.

  2. #2
    SQLite non supporta le transazioni?

  3. #3

  4. #4
    Ho letto il contenuto dei link che mi hai suggerito. Ho cercato di capire come avrei potuto metterne in pratica il concetto nel mio programma che, ripeto, e' scritto in ambiente operativo Linux e in Lazarus Free Pascal. Poi, in particolare, per la gestione del mio archivio dati, mi sono affidato ad SQLite3, su cui ho agito per le operazioni di Lettura, Scrittura tramite le librerie ZEOS, attraverso il metodo DataModule

    Ho provato a scrivere sul DB un gruppo di comandi, interni a una serie del tipo "BEGIN TRANSACTION ... COMMIT" , mantenendo pero' separati i comandi nella loro successione. Quindi il primo dei comandi dati in pasto al DataModule e' stato:
    codice:
     sql:= 'BEGIN TRANSACTION';
      DataModule1.ZQuery1Transaz.Active:= False;
      DataModule1.ZQuery1Transaz.SQL.Text:= sql;
      DataModule1.ZQuery1.ExecSQL;
    Ebbene , ho ottenuto soltanto un messaggio d'Errore per "Query Empty".

    E, purtroppo, vista la mia scarsa conoscenza di ZEOS e della tecnica per l'applicazione corretta dei comandi SQL in ambito Transaction, non riesco a capire come dovrei scrivere correttamente i comandi necessari.
    Ultima modifica di petrusic; 28-10-2022 a 22:30

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.