我执行了一个外连接,在informix
数据库中成功执行了,但在我的代码中获得了以下异常:
DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);
启用约束失败。一或多个行包含违反非空、唯一或外键约束的值。
我知道问题所在,但不知道如何修复它。
我在进行外部连接的第二个表中包含了一个由多个字段组成的主键,在之前的外部连接查询中这些字段是空值。
编辑:
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 = ....
问题发生在表cc1assiscrseval
上。 主键是(batch_no, crsnum, lect_code)。如何解决这个问题? 编辑: 根据
@PaulStock
的建议:
我按他说的做,然后我得到:?dt.GetErrors()[0]{System.Data.DataRow} HasErrors: true ItemArray: {object [10]} RowError:“列'eval'不允许DBNull.Value。”
因此,我通过将
e.eval
替换为NVL(e.eval,'') eval
来解决我的问题,并解决了这个问题。
非常感谢。
,e.eval,e.batch_no,e.crsnum,e.lect_code,e.prof_course
时,一切都正常。请问问题出在哪里? - Anyname Donotcare