Provo ad uscire dall'astratto e entrare più nel concreto (magari qualcuno ha un approccio migliore di quello che ho pensato io per ovviare a questo problema)
immaginiamo di avere una tabella utente , una tabella utente_alfa e una tabella utente_beta con utente (padre) ,utente_alfa (figlio) e utente_beta (figlio di alfa) .
per diventare utente_alfa bisogna effettuare un pagamento che è mensile .
in pratica un utente diventa utente_beta qualora sia utente_alfa per più di 5 mesi consecutivi .
io ho pensato a questo approccio :
trigger1 (si avvia dopo un inserimento nella tabella pagamenti ): si occupa si inserire nella tabella degli utenti alfa l'id dell'utente con la data corrispondente
trigger2 (si avvia dopo un inserimento nella tabella utente_alfa ) : si occupa si inserire nella tabella degli utenti beta l'id dell'utente
l'evento nello scheduler si avvia ogni 30 giorni e le operazioni che deve eseguire sono sostanzialmente lo svuotamento delle 2 tabelle (utente_alfa e utente_beta ) e l'invocazione dei due trigger che dovrebbero andare a riempire di nuovo la tabella scremando gli utenti che non sono più alfa e automaticamente escludendo quelli che non sono beta .
mi rendo conto che come operazione è,oltre che macchinosa anche,abbastanza dispendiosa in termini di tempo ma è una cosa che a mio parere può funzionare abbastanza bene .
se avete altre idee sono aperto anche ad altri punti di vista .