我有这个源表为我的合并和目标表具有相同的字段。SQL SERVER MERGE错误
ID Name Birth Work
123 john doe 01/20/2000 plumber
123 john doe 01/20/2000 carpenter
234 john ere 12/12/1990 driver
345 john wel 02/21/1998 janitor
,但是当我尝试使用合并语句从源传输我的数据,它会提示,如“重复主键”的错误,有时“因为它已被更新一次,无法更新数据。”我怎样才能避免这些错误?
我想要做的是,在我的源表中,它充当工人(历史)的录取,我的目标数据是主清单。任何人都可以帮助我如何避免这个错误?
这是我的查询:
MERGE EMPMASTER as T
USING (Select ID,Name,Birth,Work from ADMISSION) as S
ON (CAST(T.IDNum as int)=Cast(S.ID as int))
WHEN NOT MATCHED by TARGET
THEN
INSERT (IDNum,EMPName,EMPBirth,EMPWork)
Values (ID,Name,Birth,Work)
WHEN MATCHED THEN
UPDATE Set IDNum=ID,
EMPName=Name,
EMPBirth=Birth,
EMPWork=Work);
所以,在我的主人名单表它看起来像:
ID Name Birth Work
123 john doe 01/20/2000 carpenter
234 john ere 12/12/1990 driver
345 john wel 02/21/1998 janitor
'Id'是IDENTITY列? –
是ID是标识列 – user3312649
您不能插入'IDENTITY'列的值。如果它只是一个主键,那么它也不会允许您添加重复值。您必须在新表格中添加您正在插入的“ID”作为“FK”。 –