sql >> Databasteknik >  >> RDS >> Mysql

Finns det något sätt att automatiskt skapa en trigger vid skapandet av en ny tabell i MySQL?

Som jag har påpekat i din andra fråga Jag tror att en process- och säkerhetsgranskning är på sin plats här. Det är en granskad databas, så ingen (särskilt tredjepartstjänsteleverantörer) bör skapa tabeller i din databas utan din vetskap .

Problemet du har är, förutom den nya tabellen som skapas, måste du också skapa en annan tabell för att lagra de granskade/ändrade posterna, som kommer att ha en identisk struktur som den ursprungliga tabellen med eventuellt en tid/datum och användarkolumn. Om en tredjepartsleverantör skapar den här tabellen, kommer de inte att veta att skapa granskningstabellen, så även om du kunde generera dina utlösare dynamiskt, skulle de inte fungera.

Det är omöjligt att skapa en enda tabell som kommer att hålla alla ändringar för alla andra tabeller i din databas eftersom strukturen mellan tabellerna oundvikligen skiljer sig åt.

Därför:gör alla ändringsförfrågningar (t.ex. leverantörer vill skapa TableX, de skickar en ändringsbegäran (inklusive SQL-skriptet) som förklarar anledningen till ändringen) till dig själv och/eller ditt team.

Du kör SQL på en testkopia av din databas och använder samma struktur för att skapa en annan tabell för de modifierade posterna.

Du skapar och testar sedan de nödvändiga triggarna, genererar ett nytt SQL-skript för att skapa de två tabellerna och dina triggers och kör det på din livedatabas. Du ger din leverantör behörighet att använda den nya tabellen och de försvinner.

Alla är glada. Ja, det kan ta lite längre tid, och ja, du kommer att ha mer arbete att göra, men det är mycket mindre arbete än vad som krävs för att försöka analysera frågeloggar för att återskapa poster som redan har ändrats/ raderade, eller analysera den binära loggen och håll dig uppdaterad med varje ändring, och ändra din kod när formatet på loggfilen ändras etc etc.




  1. Vad är triggers i SQL och hur implementerar man dem?

  2. Kan MySQL sammanfoga strängar med ||

  3. mysql root lösenord glömt

  4. MySQLNonTransientConnectionException:Kunde inte skapa anslutning till databasserver