2016-06-09 32 views
0

所以我需要插入一些記錄從表1到表2取決於他們的user_id(PVKEY)和record_id(CNKEY)。爲了更好地解釋,每個用戶都有自己獨特的user_id(PVKEY),每個記錄都有自己的record_id(CNKEY)。一個用戶可以有幾個記錄,但每次當新記錄被添加,它需要獲得新的RECORD_ID(CNKEY)每次我嘗試插入,我得到消息:從table1插入數據到表2其中是用戶ID和記錄ID

Cannot insert the value NULL into column 'CNKEY', table 'Progress.dbo.CONTHIST'; column does not allow nulls. INSERT fails. The statement has been terminated.

USER_ID(PVKEY):數據和系統類型浮點鍵,主鍵FALSE,允許NULL爲真。 record_id(CNKEY):數據和系統類型爲float,主鍵爲TRUE,允許爲空FALSE,record_id(CNKEY)僅存在於table2中,但不存在於table1中且兩個表中都存在user_id(PVKEY)。因此,這裏是我的榜樣,我是想沒有任何的運氣來執行它:

INSERT INTO dbo.CONTHIST (PVKEY, CONTTYPE, ASSIGNEDTO, CONTDATE, SOURCE, NOTES, CNKEY) 
     SELECT Pvkey, ContactType, AssignedTo, Date, SourceCode, ContactStatus 
     FROM MopUpEOC 
     WHERE PVKEY in (5,7,11) 

我希望有一些好的靈魂誰幫我,我就明白了很多! :D

回答

2

錯誤很明顯:匹配記錄中的CNKEYNULL,至少有一次。

您有兩種基本選擇:

  • 變化CNKEY允許NULL值。
  • 在聲明中添加某種默認值。

後者將使用COALESCE(),像這樣:

INSERT INTO dbo.CONTHIST (PVKEY, CONTTYPE, ASSIGNEDTO, CONTDATE, SOURCE, NOTES, CNKEY) 
    SELECT Pvkey, ContactType, AssignedTo, Date, SourceCode, 
      COALESCE(ContactStatus, '') -- Or whatever the appropriate value would 
    FROM MopUpEOC 
    WHERE PVKEY in (5, 7, 11) 
+1

雖然他目前的錯誤是關於CNKEY字段,他沒有在他的聲明中提供。插入提到7個字段,選擇只有6. – Jens

+0

ContactStatus它不是一個問題,沒有空值。問題是Cnkey –

+0

我試圖從table1插入記錄到table2取決於他們的id -s。我收到錯誤: Msg 2627,Level 14,State 1,Line 5違反PRIMARY KEY約束'PK_CONTHIST'。不能在對象'dbo.CONTHIST'中插入重複鍵。重複的鍵值是(0)。該語句已終止。 問題也出現在記錄中,因爲它們中的每一個都有他的record_id,這對於表中的每條記錄都是唯一的。任何建議都會有所幫助。謝謝你:D –

0

的問題是,你是不是傳遞CNKEY爲您插入一個值,但把它定義爲你的列是一個插入。

INSERT INTO dbo.CONTHIST (PVKEY, CONTTYPE, ASSIGNEDTO, CONTDATE, SOURCE, NOTES, CNKEY) -- You defined it here! 
     SELECT Pvkey, ContactType, AssignedTo, Date, SourceCode, ContactStatus -- But aren't adding it here 
     FROM MopUpEOC 
     WHERE PVKEY in (5,7,11) 

如果CNKEY值應該是一個新的數值,你可以在你MopUpEOC表改變它是一種身份字段,並從「INSERT INTO ...」行刪除它。這樣SQL Server會自動爲每條記錄添加一個增量數值到該列,這將是唯一的。

+0

我試圖從表1到表2插入記錄取決於他們的ID。我收到錯誤: Msg 2627,Level 14,State 1,Line 5違反PRIMARY KEY約束'PK_CONTHIST'。不能在對象'dbo.CONTHIST'中插入重複鍵。重複的鍵值是(0)。該語句已終止。 問題也出現在記錄中,因爲它們中的每一個都有他的record_id,這對於表中的每條記錄都是唯一的。任何建議都會有所幫助。謝謝:D –

+0

修改我的答案,希望這有助於一點。 – Jens

相關問題