2016-04-05 11 views
0

Ich erstelle eine einfache Anwendung, wo ich ein Servlet und JDBC benutze, um Benutzer zu erstellen.Fügen Sie Benutzername in eine andere Tabelle hinzu, während Sie einen neuen Oracle-Benutzer erstellen

Gibt es eine Möglichkeit, einen Trigger verwendet die Benutzername in einer anderen Tabelle einfügen, wenn die Oracle-Benutzer mit erstellt:

create user xyz ...... 

Sobald diese Abfrage erfolgreich ausgeführt, es fügt die Benutzerinformationen in der DBA_USERS Tabelle .

Ich möchte den Benutzernamen auch in eine andere Tabelle eingefügt werden. Sollte ich es manuell über JDBC zu dieser anderen Tabelle hinzufügen, oder kann ich einen Trigger erstellen, um dies automatisch zu tun?

Antwort

2

Sie a system trigger auf dem create user DDL Basis verwenden könnten (aber nicht ein DML-Trigger auf der dba_users Ansicht - man kann das sowieso nicht, aber denken Sie nicht einmal zu versuchen, alles zu tun, basierend auf den Daten-Wörterbuch). Aber Sie haben wirklich keine Möglichkeit, um zu wissen, ob der Benutzer, der erstellt wird, tatsächlich ein Anwendungsbenutzer ist - Sie würden davon ausgehen, dass jeder zur Datenbank hinzugefügte Benutzer nur mit Ihrer Anwendung in Verbindung bringen könnte.

Da Sie sowieso andere Schritte ausführen müssen - wie das Gewähren von Rollen und/oder Privilegien, das Hinzufügen anderer Anwendungssicherheitsdaten usw., ist es wahrscheinlich sinnvoller, die Tabelleneinfügung manuell durchzuführen.

Es könnte sogar sinnvoller sein, den gesamten Code zur Benutzererstellung in eine gespeicherte (und wahrscheinlich gepackte) Prozedur zu schreiben, und dies nur über JDBC aufzurufen. Der Nachteil davon ist, dass die create user und jede andere DDL innerhalb der Prozedur als dynamisches SQL ausgeführt werden müssen. Jeder Ihrer eigenen Tabelleneinfügungen wäre jedoch zusammen, und Sie müssten nur diesen einzelnen JDBC-Aufruf ausführen.

Sie können auch andere Verfahren zum Ändern und Löschen von Benutzern haben.

Etwas zu beachten, wie auch immer Sie es tun, ist, dass DDL implizit festlegt. Nicht unbedingt ein Problem, nur etwas zu beachten, so dass Sie die Schritte in einer wiederherstellbaren Weise bestellen können.

+0

Dank :) Gab eine klare Idee –

Verwandte Themen