【问题标题】:Insert data from tableA to tableB将表A中的数据插入表B
【发布时间】:2016-06-08 23:52:50
【问题描述】:

所以我想根据它们的 pvkey 将数据从 tableA 插入到 tableB。每一行都有他的pvkey,同一个pvkey下的一行可以有多条记录,每条记录都有他唯一的cnkey。 Cnkey 对于表中的任何数据都是唯一的。当我从 tableA 插入数据时,没有列 Cnkey,而在 tableB 中有 Cnkey。

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

【问题讨论】:

  • 那么你想在 Cnkey 列中插入什么?
  • 不确定是什么问题。如果该列不存在,则不要将其包含在插入语句中 - 将 CNKEYINSERT INTO LINE 中取出(假设它具有默认值)
  • 它说:无法将值 NULL 插入列 'CNKEY',表 'Progress.dbo.CONTHIST';列不允许空值。插入失败。该语句已终止。当我不包含列 Cnkey 时会发生这种情况。我尝试插入 0,但它必须是某种记录,因为每次插入新记录时,他都需要拥有对每条记录都是唯一的 Cnkey。
  • 也许您应该首先执行 SELECT * INTO newTable FROM MopUpEOC WHERE 等... 仅针对您想要的列。

标签: sql sql-server insert


【解决方案1】:

一些可以帮助你的事情:

  • 检查CnKey 是否是您的表的串行主键。如果是串行主键就没有问题。
  • 检查CnKey是否为NOT NULL,如果不是,您可以稍后更改它的值,也可以设置一个默认值。

比如CnKey列是NOT NULL,那么可以使用下面的Query来允许NULL

ALTER TABLE TableB ALTER COLUMN CnKey INT NULL

INT 更改为您的列的真实类型。

或者你设置一个默认值:

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

【讨论】:

  • Cnkey数据,系统类型为float,主键为true。
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2015-06-27
相关资源
最近更新 更多