2013-01-22 17 views
0

我有一個表與下面的列如何調用允許空值的列適當

EndDate  DateTime AllowNulls 
IsApproved Bit  AllowNulls 

當我送一個選擇查詢到我的表,這兩列生成錯誤。

可以說這是我的選擇查詢。

SELECT S.Name, S.Surname, 
    CASE 
     WHEN S.EndDate IS NOT NULL AND S.IsApproved = 1 THEN 'Left' 
     WHEN S.EndDate IS NOT NULL AND S.IsApproved = 0 THEN 'Waiting' 
     WHEN S.EndDate IS NULL AND S.IsApproved IS NULL THEN 'Joined' 
     ELSE '' 
     END AS Durumu 
FROM STUDENT S 

我收到的錯誤: 未能啓用約束。一行或多行包含違反非空,唯一或外鍵約束的值

我的問題是如何適當地選擇這些空列?

P.S.這個錯誤與返回相同的查詢具有相同的主鍵無關,因爲我的表中只有一個條目:)

+2

我假設你正在使用強類型的DataSet來獲取你的數據,對嗎?這個錯誤不是來自你的數據庫,而是你的數據集。您可以通過這種方式檢查是什麼導致異常:在填充DataTable/DataSet之前設置一個斷點。在調試器的快速監視窗口中執行它。執行'DataTable.GetErrors'來獲取所有設置了'RowError'的行。然後查看一行或多行的這個屬性來查看實際問題。也許你只需要通過配置窗口來刷新表格。 –

回答

2

我假設你使用強類型的DataSet來獲取你的數據,對嗎?

此錯誤不是由您的數據庫引發的,而是由您的DataSet引發的。

您可以查閱一下這種方式導致了異常:

  • 您填寫的DataTable/DataSet之前設置一個斷點。
  • 執行它在調試器
  • 的快速監視窗口執行DataTable.GetErrors獲得其RowError設置
  • 查找到一個或多個行的這個屬性的所有行看到實際的問題

也許你只需要通過配置窗口來刷新表格,因爲同時你已經改變了sql-server中的約束。