2016-06-08 59 views
0

所以我想根據他們的pvkey從tableA插入tableB到tableB的數據。每行都有他的pvkey,同一個pvkey下的一行可以有多個記錄,每個記錄都有他唯一的cnkey。 Cnkey對於表中的任何數據都是唯一的。當我從tableA插入數據時,沒有列Cnkey,而在tableB中有Cnkey。從tableA插入數據到tableB

INSERT INTO CONTHIST (CONTTYPE, ASSIGNEDTO, CONTDATE, SOURCE, CNKEY) 
    SELECT ContactType, ASSIGNEDTO, DATE, SourceCode, ?!?! 
    FROM MopUpEOC 
    WHERE Pvkey in (1,5,7,9,11,20) 

你能幫助我,謝謝:d

+3

所以你要插入Cnkey列是什麼? – jarlh

+0

不確定是什麼問題。如果該列不存在,那麼就不要將它包含在插入語句中 - 從'INSERT INTO'行取出'CNKEY'(假設它有一個默認值) – Takarii

+0

它說:不能將值NULL插入到'CNKEY'列中,表'Progress.dbo.CONTHIST';列不允許有空值。 INSERT失敗。 該聲明已被終止。 當我不包含列Cnkey時會發生這種情況。 我試圖插入0,但它必須是某種記錄,因爲每次插入新記錄時,他都需要具有對每個記錄都唯一的Cnkey。 –

回答

0

有幾件事情,可以幫助你:

  • 檢查CnKey是你的表的串行主鍵。如果它是串行主鍵,則沒有問題。
  • 檢查CnKey是否爲NOT NULL,如果不是,您可以稍後更改它的值,或者您可以設置一個默認值。

例如,列CnKeyNOT NULL,那麼你可以使用下面的查詢來允許NULL

ALTER TABLE TableB ALTER COLUMN CnKey INT NULL 

更改INT到真正的類型的列。

或者你設置的默認值:

ALTER TABLE TableB ADD CONSTRAINT ConstraintName DEFAULT 'DefaultName' FOR CnKey; 
+0

Cnkey數據和系統類型爲float且主鍵爲true。 –

相關問題