[DBUEB] Aufgabe 6

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

[DBUEB] Aufgabe 6
Hab bei der aufgabe 6 ein paar Sachen bemerkt. Die eigentlich jeder machen sollt bevor er anfängt zu testen.

1ens. Man kann nichts einfuegen weil dann folgender fehler kommt.
ORA-02291: integrity constraint (FI_FLIGHT_NUMBER_FK) violated - parent key not found
womit eigentlich die datenbank recht hat.

Also hab ich schnell was zussamengeschrieben was eigentlich jedem nutzen könnte. Einfach copy paste.

tabele flight ??korrigieren??

insert into flight values(‘AC000’,‘AC’,1);

insert statements für den trigger

insert into flight_intervals values(112698, ‘AC000’, 1, 8, to_date(‘01-FEB-03 07:00 PM’, ‘DD-MON-YY HH:MI PM’), to_date(‘01-FEB-03 08:00 PM’, ‘DD-MON-YY HH:MI PM’));
insert into flight_intervals values(112699, ‘AC000’, 8, 4, to_date(‘01-FEB-04 07:59 PM’, ‘DD-MON-YY HH:MI PM’), to_date(‘01-FEB-04 10:00 PM’, ‘DD-MON-YY HH:MI PM’));
insert into flight_intervals values(112700, ‘AC000’, 3, 4, to_date(‘01-FEB-04 09:00 PM’, ‘DD-MON-YY HH:MI PM’), to_date(‘01-FEB-04 10:00 PM’, ‘DD-MON-YY HH:MI PM’));

zwischen ersten und zweiten ist es die zeit

zwischen zweiten und drittem ist es der flughafen

zum nachschauen ob es eingefuegt wurde

SELECT * FROM flight_intervals WHERE flight_number=‘AC000’;

zum loeschen

DELETE FROM flight WHERE flight_number=‘AC000’;
DELETE FROM flight_intervals WHERE flight_number=‘AC000’;

Falls jemand bessere ideen hat soll er sie ruhig posten.

Hoffe es hilft dem einen oder anderen weiter.

Stelios


Hi,

wie sehen bei euch die Meldungen des Servers aus aus, wenn der Trigger raise_application_error() aufruft?

Bei mir so:

SQL>  insert into flight_intervals values(112699, 'AC000', 8, 4, to_date('01-FEB-03 07:59 PM', 'DD-MON-YY HH:MI PM'), to_date('01-FEB-04 10:00 PM', 'DD-MON-YY HH:MI PM'));
insert into flight_intervals values(112699, 'AC000', 8, 4, to_date('01-FEB-03 07:59 PM', 'DD-MON-YY HH:MI PM'), to_date('01-FEB-04 10:00 PM', 'DD-MON-YY HH:MI PM'))
             *
ERROR at line 1:
ORA-20501: Wrong from_airoprt of wrong departure_time.
ORA-06512: at "SIGAGEF.CHECK_FLIGHT_INTERVALS", line 22
ORA-04088: error during execution of trigger 'SIGAGEF.CHECK_FLIGHT_INTERVALS'

Wobei nur die erste ERROR-Zeile ‘ORA-20501: Wro…’ von meinem raise_application_error() Aufruf stammt.

Steckt bei mir ev. noch der Fehlerteufel drin, oder kommen die nachfolgenden Fehlermeldungen bei euch auch so?

@stelios: Vielen Dank für die Statements.


@elzo: Ja, gehoert so. Ist bei mir auch so.

Wie kann ich denn Dates vergleichen?

if (lastarrivaltime > :new.departure_time) then

triggert bei mir nicht.

Fuer die a2.sql:

call traffic_pckg.add_flight (‘ABC’, ‘AA’, 8000, route (40, 41, 42));

select * from flight where flight_number = ‘ABC’;

select * from flight_intervals where flight_number = ‘ABC’;

call traffic_pckg.delete_flight (‘ABC’);

Gruesse,
-Steppenwolf


Eventuell funktioniert es ja doch.

Sollte es bei dir im Allgemeinen funktionieren, und nur bei stelios Insert-Statements nicht, dann probier mal, beim ersten Insert-Statement das Datum zu ändern:


Ich wusste doch, dass es vorher ging! Danke!

@stelios: Da hast du ja eine ganz schoen fiese Falle gestellt - soo genau habe ich mir die Parameter von den inserts dann auch nicht durchgelesen :]…


Ich habe Fragen zur Aufgabe 6.
Die Prozedur add_flight fügt, wenn ich es richtig verstanden habe, auch
Daten in die Tabelle flight_intervals ein. Allerdings fehlen beim Einfügen
die jeweiligen flight_id’s. Wie komme ich an flight_id-Werte? flight_id darf
ja auch keine Null-Werte haben, da es sich um einen Primärschlüssel handelt.
Mein zweites Problem ist wie man auf die einzelnen Werte des Typs ROUTE
(Nested Table) zugreifen kann um die Zahlen in die Tabelle flight_intervals einzutragen.


Sorry hab mir die inserts auch nicht so genau angeschaut.
Hab sie einfach aus dem skript kopiert. Teils aus dem englischen teils aus dem deutschen.
:smiley:

Deshalb auch das Durcheinander mit dem Datum.


Ich denke das hier sollte einige Fragen beantworten…
Ist aus 2003

Attachment:
6_Hinweise.pdf: https://fsi.cs.fau.de/unb-attachments/post_21705/6_Hinweise.pdf


Vielen Dank fuer die Infos!


Vielleicht liest das noch jemand rechtzeitig und hat auch Ahnung:

Beim compilieren krieg ich einen Fehler, wenn ich auf das erste (bzw. letzte) Element des Tables route mittels route.first bzw route.last zugreife

Fehlermeldung:
component “first” must be declared


Musst die Bezeichnung verwenden, die du für den Datentyp an die Aufgabe übergibst.

also

flight_route.first
bzw
flight_route.last

wenn du’s so benannt hast, wie im Skript.


dohm ist wusste dass es so einfach sein musste; es lebe der wald vor aluter baeumen :wink: