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

Er der nogen måde at automatisk oprette en trigger ved oprettelse af ny tabel i MySQL?

Som jeg har påpeget i dit andet spørgsmål Jeg tror, ​​at en proces- og sikkerhedsgennemgang er på sin plads her. Det er en revideret database, så ingen (især tredjepartstjenesteudbydere) burde oprette tabeller i din database uden din viden .

Problemet du har er, udover den nye tabel, der oprettes, skal du også have en anden tabel oprettet for at gemme de reviderede/ændrede poster, som vil have en identisk struktur som den oprindelige tabel med muligvis en tid/dato og brugerkolonne. Hvis en tredjepartsudbyder opretter denne tabel, ved de ikke, hvordan de skal oprette revisionstabellen, så selvom du kunne generere dine triggers dynamisk, ville de ikke fungere.

Det er umuligt at oprette en enkelt tabel, der vil indeholde alle ændringer for alle andre tabeller i din database, fordi strukturen mellem tabeller uundgåeligt er forskellig.

Derfor:foretag alle ændringsanmodninger (f.eks. udbydere ønsker at oprette TableX, de sender en ændringsanmodning (inklusive SQL-scriptet), der forklarer årsagen til ændringen) til dig selv og/eller dit team.

Du udfører SQL'en på en testkopi af din database og bruger den samme struktur til at oprette en anden tabel til at indeholde de ændrede poster.

Du opretter og tester derefter de nødvendige triggere, genererer et nyt SQL-script for at oprette de to tabeller og dine triggere og udføre det på din live-database. Du giver din udbyder tilladelse til at bruge den nye tabel, og så er de væk.

Alle er glade. Ja, det kan tage lidt længere tid, og ja, du vil have mere arbejde at gøre, men det er en helvedes meget mindre arbejde, end der kræves for at prøve at parse forespørgselslogfiler for at genskabe poster, der allerede er blevet ændret/ slettet, eller parse den binære log og hold dig opdateret med hver ændring, og modificer din kode, når formatet på logfilen ændres osv. osv.




  1. phpMyAdmin på MySQL 8.0

  2. Fatal fejl:Læs venligst sikkerhedsafsnittet i manualen for at finde ud af, hvordan du kører mysqld som root

  3. Hvad er forskellen mellem bindevariabler og substitutionsvariabler (som jeg indtaster ved hjælp af &&)?

  4. Sådan forbedres replikeringsydelsen i en MySQL eller MariaDB Galera Cluster