Ich gehe durch eine alte Vergangenheit Papier auf Datenbank-Server-Management für meine Prüfung morgen und kann nicht für das Leben von mir beantworten. Könnte mir jemand eine knappe Antwort geben oder mir wenigstens in die richtige Richtung zeigen? Jede Hilfe wird sehr geschätzt!SQL Trigger Vergangenheit Papier
b) Überwachungsdaten werden häufig durch Datenbankauslöser erfasst. (i) Was würde passieren, wenn der Auslöser ausgelöst wird? (ii) Diskutieren Sie, wie dies normale Datenbankoperationen beeinflussen kann.
(6 Punkte)
Command (as user SYS):
SQL> CREATE OR REPLACE TRIGGER audit-table-DEPT AFTER
2 INSERT OR UPDATE OR DELETE ON DEPT FOR EACH ROW
3 declare
4 audit_data DEPT$audit%ROWTYPE;
5 begin
6 if inserting then audit_data.change_type := 'I';
7 elsif updating then audit_data.change_type :='U';
8 else audit_data.change_type := 'D';
9 end if;
10
11 audit_data.changed_by := user;
12 audit_data.changed_time := sysdate;
13
14 case audit_data.change_type
15 when 'I' then
16 audit_data.DEPTNO := :new.DEPTNO;
17 audit_data.DNAME := :new.DNAME;
18 audit_data.LOC := :new.LOC;
19 else
20 audit_data.DEPTNO := :old.DEPTNO;
21 audit_data.DNAME := :old.DNAME;
22 audit_data.LOC := :old.LOC;
23 end case;
24
25 insert into DEPT$audit values audit_data;
26 end;
27/
Trigger created.
Können Sie klären, welchen Teil der Frage Sie nicht verstehen? Verstehst du überhaupt keine Auslöser? Kennst du die Triggersyntax nicht?Können Sie nicht erkennen, welche Wirkung dieser Auslöser insbesondere hat? –
Ich verstehe, dass der Auslöser auf eine Einfügung ausgelöst wird, aktualisieren oder löschen in der Tabelle DEPT. Wenn es in die Tabelle eingefügt wird, dann tut es etwas, wenn es etwas aktualisiert, tut es etwas anderes, wenn etwas etwas anderes gelöscht wird, aber ich kann nicht herausfinden, was es tut. Von dem, was ich erfassen kann, wenn er es einfügt, verwendet das Zeichen I, um einige Daten zu ändern (wenn 'I' dann audit_data.DEPTNO: =: new.DEPTNO;) – user3357649