Mysql
 sql >> Database >  >> RDS >> Mysql

C'è un modo per creare automaticamente un trigger alla creazione di una nuova tabella in MySQL?

Come ho sottolineato in l'altra tua domanda , Penso che qui sia necessaria una revisione del processo e della sicurezza. È un database controllato, quindi nessuno (soprattutto fornitori di servizi di terze parti) dovrebbero creare tabelle nel tuo database a tua insaputa .

Il problema che hai è che, oltre alla nuova tabella creata, dovrai anche creare un'altra tabella per archiviare i record controllati/modificati, che avranno una struttura identica a quella della tabella originale con possibilmente un'ora/data e colonna utente. Se un provider di terze parti sta creando questa tabella, non saprà creare la tabella di controllo, quindi anche se potessi generare i tuoi trigger in modo dinamico, non funzionerebbero.

È impossibile creare una singola tabella che contenga tutti i record delle modifiche per tutte le altre tabelle nel database perché la struttura tra le tabelle è inevitabilmente diversa.

Pertanto:fai tutte le richieste di modifica (ad es. i provider vogliono creare TableX, inviano una richiesta di modifica (incluso lo script SQL) spiegando il motivo della modifica) a te stesso e/o al tuo team.

Si esegue l'SQL su una copia di prova del database e si utilizza la stessa struttura per creare un'altra tabella per contenere i record modificati.

Quindi crei e testa i trigger necessari, generi un nuovo script SQL per creare le due tabelle e i tuoi trigger ed eseguilo sul tuo database live. Dai al tuo provider le autorizzazioni per utilizzare la nuova tabella e via.

Tutti sono felici. Sì, potrebbe volerci un po' di più e sì, avrai più lavoro da fare, ma è molto meno lavoro di quello necessario per provare ad analizzare i log delle query per ricreare i record che sono già stati modificati/ cancellato, oppure analizza il log binario e tieniti aggiornato con ogni modifica e modifica il tuo codice quando cambia il formato del file di log ecc.