2009-12-08 67 views
1

我得到了一個Oracle數據庫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手動插入(插入行 - 對話&提交)的作品就像一個魅力,這並不能幫助我在所有...

任何幫助表示讚賞 助威騙局

+1

什麼前端/ API /無論你用來做插入和提交失敗? – 2009-12-08 14:07:27

+3

我敢打賭,出於某種原因,儘管您認爲不行,但插入一個不存在的PersonalNr,並且由於約束被推遲,直到您提交時纔會出現錯誤。 – erikkallen 2009-12-08 14:11:54

回答

4

確保您沒有隱藏插入或提交的任何異常。 (由於FK約束被推遲,您將從違反FK的提交中獲得異常。)

作爲更普遍的調試建議,我會說使用SQL Trace,以便您可以確切地看到發生了什麼。

+0

我敢打賭提交異常的提交,但應用程序語言並不期望它。 – 2009-12-08 21:44:51

1

我的猜測是你的UI沒有正確處理異常,並且由於某種原因插入失敗,但你沒有被告知。

0

另一個想法:

如果你覺得IDE被遮蔽/隱藏/顯示不正確的例外,你爲什麼不添加插件和提交到開始...結束(匿名PL/SQL塊),看看什麼是彈出?更有甚者,異常塊中的dbms_output也可以做到這一點。

但上面提到的SQL Trace肯定會告訴你幕後發生了什麼,並且據我所知,SQL跟蹤只能用於PL/SQL語句,如果這是正確的,你必須把插入並提交到PL/SQL塊中。