これは奇妙なものです... 私は2つのテーブルtableAとtableBを持っています tableBはtableAに外部キーを持っています。c#ora-02291エラー
私はsprocsを2つ持っています.1つはテーブルAに、もう1つはテーブルBにあります。
odp.netを使用する最初のsprocを実行して、tableAにレコードを挿入します。 SQLPlusを開いてこのレコードを選択することができます。
次に、第2のsprocを実行して、tableBに挿入します。 それは私がタイプミスなどをチェック、ダブル、トリプル、クワッドを持って
"ORA-02291-整合性制約違反 - 親キー - 見つかりません" で失敗...何もありません。
SQLPlusでこの同じ操作を手動で行うと、同じsprocsを使用しても問題がなくなります。
これは、12時間以上も私を殺しているので、わかりやすくなければならないことがあります。 ここにsprocsがあります。
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;
テーブルAとテーブルBのINTXIDのタイプ(DB内)は何ですか?どのような型にあなたの.netコードにマップされていますか? –
データベース・タイプ:CHAR(22) Oracle.DataAccess.Client.OracleParameter.DBType:文字列 OracleParameter.OracleDBType:VARCHAR2 OracleParameter.OracleDBTypeEx:VARCHAR2 – Wjdavis5
あなたはそれが例外をスローして、外部キー参照のINTXSEGMENT.INTXIDだことは確かです他の外部キー制約ではありませんか?これをデバッグするには、その外部キーを無効にしてテストを実行し、成功した場合はINTX_PARTICIPANTテーブルの内容をチェックしてINTXID列の値を確認します。 – spencer7593