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 Trace,这样您就可以准确地看到正在发生的事情。

于 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 回答