Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es eine Möglichkeit, automatisch einen Trigger beim Erstellen einer neuen Tabelle in MySQL zu erstellen?

Wie ich in Ihre andere Frage , denke ich, dass hier eine Prozess- und Sicherheitsüberprüfung angebracht ist. Es handelt sich um eine geprüfte Datenbank, sodass niemand (insbesondere Drittanbieter) sollten ohne Ihr Wissen Tabellen in Ihrer Datenbank erstellen .

Das Problem, das Sie haben, ist, dass Sie neben der neu erstellten Tabelle auch eine weitere Tabelle erstellen müssen, um die geprüften/geänderten Datensätze zu speichern, die eine identische Struktur wie die ursprüngliche Tabelle mit möglicherweise Uhrzeit/Datum haben wird und Benutzerspalte. Wenn ein Drittanbieter diese Tabelle erstellt, weiß er nicht, dass er die Auditing-Tabelle erstellen soll, daher würden sie nicht funktionieren, selbst wenn Sie Ihre Trigger dynamisch generieren könnten.

Es ist unmöglich, eine einzelne Tabelle zu erstellen, die alle Änderungsaufzeichnungen für alle anderen Tabellen in Ihrer Datenbank enthält, da sich die Struktur zwischen den Tabellen zwangsläufig unterscheidet.

Deshalb:Stellen Sie alle Änderungswünsche (z. B. Anbieter möchte TableX erstellen, er reicht einen Änderungswunsch (einschließlich des SQL-Skripts), in dem der Grund für die Änderung erläutert wird) an sich selbst und/oder Ihr Team.

Sie führen die SQL auf einer Testkopie Ihrer Datenbank aus und verwenden dieselbe Struktur, um eine weitere Tabelle zu erstellen, die die geänderten Datensätze enthält.

Anschließend erstellen und testen Sie die erforderlichen Trigger, generieren ein neues SQL-Skript, um die beiden Tabellen und Ihre Trigger zu erstellen, und führen dieses in Ihrer Live-Datenbank aus. Sie geben Ihrem Provider die Erlaubnis, die neue Tabelle zu verwenden, und los geht's.

Alle sind glücklich. Ja, es kann etwas länger dauern, und ja, Sie haben mehr Arbeit zu erledigen, aber das ist verdammt viel weniger Arbeit, als erforderlich ist, um zu versuchen, Abfrageprotokolle zu parsen, um Datensätze neu zu erstellen, die bereits geändert wurden/ gelöscht, oder analysieren Sie das Binärlog und halten Sie sich über jede Änderung auf dem Laufenden, und ändern Sie Ihren Code, wenn sich das Format der Logdatei ändert usw. usw.