我有一个查询,如果满足特定条件,我希望从一个表中获取数据并将其插入到另一个表中-
第一个表(TEMP_DAY_TABLE)包含列:EMP_ID_FK、TIME_ID_FK、HUTHES、DESCRIPTION、DAY-它没有索引,也没有键-它本质上是一个临时表,在执行INSERT INTO查询后,所有数据都将在其中被删除.
第二个表(EMP_TIME)包含以下列:EMP_ID_FK、TIME_ID_FK、HOURS、DATE_TIME、EMP_TIME_DESC.主键由EMP_ID_FK、TIME_ID_FK和DATE_TIME组成.
该查询的目的是,如果‘小时’中存在值并且主键的值不存在,则将TEMP_DAY_TABLE中的所有值插入到EMP_TIME中.
查询似乎按预期工作,但是当它执行时,我得到一个弹出的错误消息,内容如下:
员工时间不能追加追加查询中的所有记录.
由于类型转换失败,员工时间将0字段(S)设置为空,并且没有向表中添加4条记录(S),4条记录(S),0条记录(S),因为违反有效性规则.
是否仍要运行操作查询?
具体地说,它指示查询由于键冲突而没有将(#)记录添加到表中-错误消息提供了忽略错误并无论如何运行查询的选项,当这样做时,查询会按预期执行,并且不会在结尾表(EMP_TIME)中产生任何重复项-我不明白如果查询没有try 插入主键副本,我为什么会得到键冲突.它正在try 插入部分主键(即EMP_ID_FK)的副本,但不是整个键-我确信我遗漏了一些东西,因为我的SQL&A;Access冒险仍处于早期阶段,只是希望解决该错误.
下面是正在执行的查询:
INSERT INTO EMP_TIME ( EMP_ID_FK, TIME_ID_FK, Hours, Date_Time, EMP_TIME_Desc )
SELECT t.Emp_ID_FK, t.Time_ID_FK, t.Hours, t.Day, t.Description
FROM Temp_Day_Table t
left join EMP_TIME on t.EMP_ID_FK = EMP_TIME.EMP_ID_FK
and t.Time_ID_FK = EMP_TIME.TIME_ID_FK
and t.Day = EMP_TIME.Date_Time
where t.Hours <> 0;
同样,查询似乎按预期运行,但Access抛出了一个键冲突错误,我不确定确切原因.
先谢谢你.