これは奇妙なことです...2つのテーブルtableAとtableBtableBがtableAに外部キーを持っています。
2つのsprocがあり、1つはtableAに挿入し、もう1つはtableBに挿入します。
odp.netを使用して、最初のsprocを実行し、tableAにレコードを挿入します。次に、SQLPlusを開いて、このレコードを選択できます
次に、2番目のsprocを実行して、tableBに挿入します。 「ora-02291-integrity-constraint-violated-parent-key-not-found」で失敗します
ダブル、トリプル、クワッドのタイプミスなどをチェックしています...何もありません。
SQLPlusで同じ操作を同じsprocを使用して手動で実行すると、さらに奇妙なことになりますが、問題なく機能します。
これは私が単純でなければならないことを知っている何かを探して私を12時間以上殺しています。これがsprocです。
SPROCA
CREATE OR REPLACE PROCEDURE genData_TestTrackerSegment
(
INTX_ID IN IntxSegment.IntxID%TYPE,
siteid IN INT
)
AS
BEGIN
INSERT INTO INTXSEGMENT(INTXID,INTXTYPEID,VERSION,ISPRIVATE,
SEGMENTTYPE,STARTDATETIME,INTXDIRECTION,SITEID)
VALUES(INTX_ID,1,1,0,1,SYSDATE,1,siteid);
COMMIT;
END;
SPROCB
CREATE OR REPLACE PROCEDURE genData_TestTrackerPart
(
INTX_ID IN IntxSegment.IntxID%TYPE,
INTX_PART_ID IN INTX_PARTICIPANT.INTX_PART_ID%TYPE,
INDIVID IN INDIVIDUAL.INDIVID%TYPE,
CALLID IN INTX_PARTICIPANT.CALLIDKEY%TYPE
)AS
BEGIN
INSERT INTO
INTX_PARTICIPANT(INTXID,INTX_PART_ID,INDIVID,ROLE,
CALLIDKEY,RECORDED,VERSION,STARTDATETIME)
VALUES(INTX_ID,INTX_PART_ID,INDIVID,1,CALLID,1,1,SYSDATE);
COMMIT;
END;