Frage

Ich habe eine Oracle-Datenbank 10g, hier eine Tabelle als Beispiel

create table Dienstplan
(
Montag Number(2),
Dienstag Number(2),
Mittwoch Number (2),
Donnerstag Number (2),
Freitag Number (2),
Samstag Number (2),
Sonntag Number (2),
gueltigAb DATE default SYSDATE NOT NULL,
PersonalNr Number(10) references Mitarbeiter(PersonalNr) INITIALLY DEFERRED DEFERRABLE,
PRIMARY KEY (PersonalNr, gueltigAb),
check (Montag <= 24),
check (Dienstag <= 24),
check (Mittwoch <= 24),
check (Donnerstag <= 24),
check (Freitag <= 24),
check (Samstag <= 24),
check (Sonntag <= 24)
);
/

nun das Problem, dass wenn ich eine Reihe (nicht exklusiv für diese Tabelle) einfügen, die einen Fremdschlüssel enthält (die Referenz gültig ist, so ist es nicht, dass) es dutifully Einsätze und sobald ich den ganzen Schlamassel begehen verschwindet es wieder .

INSERT INTO Dienstplan (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag,   Sonntag, PersonalNr) values ('1', '2','3','4','5','6','7','1');

Der eigentliche Kicker ist, dass der Handeinsatz in sqldeveloper (Einfügezeile - Dialog & Festschreibung) wirkt wie ein Zauber, der mir überhaupt nicht helfen ...

Jede Hilfe ist willkommen cheer hoax

War es hilfreich?

Lösung

Stellen Sie sicher, Sie verstecken sich keine Ausnahmen entweder aus dem Einsatz oder der Commit. (Da die FK-Einschränkung aufgeschoben wird, würden Sie eine Ausnahme von der Commit auf einer FK Verletzung erhalten.)

Als allgemeinere Debug-Vorschlag, würde ich sagen Verwendung SQL-Trace so können Sie sehen, genau das, was passiert ist.

Andere Tipps

Meine Vermutung ist, dass die Benutzeroberfläche ist der Umgang mit nicht Ausnahmen richtig und der Einsatz aus irgendeinem Grunde versagt, aber sie sagt sich nicht zu werden.

Eine andere Idee:

Wenn Sie denken, die IDE maskiert / Versteck / nicht die richtige Ausnahme zeigt, warum Sie den Einsatz nicht stimmen und die commit in einem Begin ... End (anonyme PL / SQL-Block) und sehen, was knallt? Noch ein dbms_output im Ausnahmeblock wird den Trick auch.

Aber sicherlich die SQL-Trace oben erwähnt wird Ihnen zeigen, was hinter den Kulissen vor sich geht, und so weit ich die SQL-Trace verstehen für PL / SQL-Anweisungen nur funktionieren wird, wenn dies richtig ist werden Sie den Einsatz setzen müssen und begeht in einem PL / SQL-Block.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top