1

私はoracle db 10gを手に入れました。ここに例としての表があります

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)
);
/

問題は、外部キーを含む行(このテーブルに限定されない)を挿入するたびに(参照は有効であるため、そうではない)、それは忠実に挿入され、混乱全体をコミットするとすぐに再び消えることです。

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

本当のキッカーは、sqldeveloperの手動挿入(行の挿入-ダイアログとコミット)が魅力のように機能することです。これはまったく役に立ちません...

どんな助けでも大歓迎です

4

3 に答える 3

4

挿入またはコミットから例外を隠していないことを確認してください。(FK 制約が延期されるため、FK 違反のコミットから例外が発生します。)

より一般的なデバッグの提案として、SQL トレースを使用すると、何が起こっているかを正確に確認できます。

于 2009-12-08T14:17:45.587 に答える
1

私の推測では、あなたの UI は例外を適切に処理しておらず、何らかの理由で挿入が失敗していますが、通知されていません。

于 2009-12-08T14:12:55.113 に答える
0

別のアイデア:

IDE が適切な例外をマスク/非表示/表示していないと思われる場合は、挿入とコミットを Begin... End (匿名の PL/SQL ブロック) に追加して、何が表示されるかを確認してみませんか? さらに、例外ブロックの dbms_output もうまく機能します。

しかし、確かに、上記の SQL トレースは舞台裏で何が起こっているかを示します。私が理解している限り、SQL トレースは PL/SQL ステートメントに対してのみ機能します。これが正しい場合は、挿入してコミットする必要があります。 PL/SQL ブロック。

于 2009-12-08T23:18:18.117 に答える