Devo utilizzare un trigger o una procedura?

di il
0 risposte

Devo utilizzare un trigger o una procedura?

Ciao ragazzi, sono alle prime armi con MySQL. Ho creato un database che simula il funzionamento di una blockchain, ecco lo schema logico:

  • Blocco(CodBlocco, Timestamp, NumTransazioni, TotCommissioni, Hash, HashPrecedente, Dimensione, Nonce)
  • Transazione(CodTransazione, Timestamp, Importo, Dimensione, Commissioni, Confermata, NumeroAttesa, Mittente)
  • DatiUtente(Indirizzo, NumTransazioni, SaldoBitcoin, SaldoDollari, BitcoinRicevuti, BitcoinInviati)
  • Composizione(Transazione, Blocco, NumeroTransazione).

C'è un vincolo di integrità referenziale fra l'attributo “Mittente” di Transazione e la chiave primaria di “Dati_Utente”. I vincoli di integrità referenziale sulla relazione composizione sono banali.

Ora, quando genero un blocco, dovrei fare una serie di controlli e azioni: 

  • L'attributo HashPrecedente deve essere effettivamente uguale all'attributo hash del blocco precedente (CodBlocco - 1).
  • Prendo una serie di transazioni non ancora confermate (caratteristica dettata dall'attributo Confermata) e le inserisco nel blocco aggiornando la tabella Composizione.
  • Calcolo gli attributi NumTransazioni, TotCOmmissioni, Dimensione di Blocco…
  • etc…

Il mio dubbio è: come verifico tutte queste situazioni? con un trigger unico? con più trigger? Con una procedura e con dei trigger?

Io pensavo di fare una procedura che si chiama GeneraBlocco() che fa tutti questi controlli e aggiunge un blocco nella tabella Blocco. Dovrei accompagnarla da alcuni trigger? Qual è la soluzioni ottimale?

In più non ho ben chiara la differenza tra funzione e stored procedure, in questo caso dovrei usare una stored procedure immagino, in quanto non calcolo un valore di ritorno.

Devi accedere o registrarti per scrivere nel forum
0 risposte