【無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束。】

這幾天開發上連續遇到幾個問題,記錄下來筆記,也給未來遇到相同問題的人參考。

原始的程式是這樣的,資料筆數500筆:

SqlBuilder sb = new SqlBuilder();

SELECT A.* , B. NAME , C. MATH ….FROM STUDENT A, TEACHER B, SUBJECT C

UNION ALL

SELECT A.* , B. NAME , C. MATH….FROM STUDENT A, TEACHER B, SUBJECT C, SCORE D

ORDER BY A.NAME, C.MATH

IDBBase db = new DBBase.CreateDB(DBInfo.STUDENT)

DataSet ds = new DataSet();

db.Fill(ds, sb, “STUDENT”);

資料處理前330筆都沒問題,若是一次處理到500筆。

就一直出現【無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束。】,於是先處理前330筆,

SQL這樣下

SELECT FIRST 330A*, B.NAME FROM…

UNION ALL

SELECT FIRST 330A*, B.NAME FROM…

又出現【Cannot use \”first\”, \”limit\” or \”skip\” in this context.。

因INFORMIX 不允許在UNION使用First

解法

SELECT FIRST 330 FROM (

UNION ALL 語法。

}

處理前330筆OK後,在處理500筆,就正常並非資料欄位NULL問題,加了NVL(C.SEX, ‘’),也無法解決。

在處理程式不小心修改到程式,又出現【命名空間不能直接包含如欄位或方法等成員】,仔細檢查發現是程式的括號問題。

無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束

相關文章

取當月第一天與當月最後一天

將GIT專案上傳到Server目錄

選好油,一分鐘教您分辨好油

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *