从tableA插入数据到tableB

问题描述:

所以我想根据他们的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。 –

有几件事情,可以帮助你:

  • 检查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。 –