Faccio un join esterno ed eseguo correttamente nel informix
database ma ottengo la seguente eccezione nel mio codice:
DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);
Impossibile abilitare i vincoli. Una o più righe contengono valori che violano vincoli non nulli, univoci o con chiave esterna.
Conosco il problema, ma non so come risolverlo.
La seconda tabella su cui eseguo il join esterno contiene una chiave primaria composita che sono nulli nella precedente query di join esterno.
MODIFICARE:
SELECT UNIQUE a.crs_e, a.crs_e || '/ ' || a.crst crs_name, b.period,
b.crscls, c.crsday, c.from_lect, c.to_lect,
c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind, e.eval, e.batch_no,
e.crsnum, e.lect_code, e.prof_course
FROM rlm1course a, rfc14crsgrp b, ckj1table c, mnltablelectev d,
OUTER(cc1assiscrseval e)
WHERE a.crsnum = b.crsnum
AND b.crsnum = c.crsnum
AND b.crscls = c.crscls
AND b.batch_no = c.batch_no
AND c.serial_key = d.serial_key
AND c.crsnum = e.crsnum
AND c.batch_no = e.batch_no
AND d.lect_code= e.lect_code
AND d.lect_code = ....
AND b.batch_no = ....
Il problema si verifica con la tabella cc1assiscrseval
. La chiave primaria è (batch_no, crsnum, lect_code).
Come risolvere questo problema?
MODIFICARE:
Secondo i @PaulStock
consigli: faccio quello che ha detto e ottengo:
? dt.GetErrors () [0] {System.Data.DataRow} HasErrors: true ItemArray: {object [10]} RowError: "La colonna 'eval' non consente DBNull.Value."
Quindi risolvo il mio problema sostituendo e.eval
a NVL (e.eval,'') eval
.e questo risolve il mio problema. Molte grazie.
,e.eval,e.batch_no,e.crsnum,e.lect_code,e.prof_course
dalla query ogni cosa va bene. qual è il problema per favore.