SQL SERVER合并错误
我有这个用于合并的源表,目标表有相同的字段SQL SERVER合并错误,sql,sql-server-2008,Sql,Sql Server 2008,我有这个用于合并的源表,目标表有相同的字段 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
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语句从源传输数据时,它会提示一个错误,如“重复主键”,有时还会提示“无法更新数据,因为它已更新一次”。如何避免这些错误
我想做的是,在我的源表中,它充当工人(历史)的准入,我的目标数据是主列表。谁能帮我避免这个错误
这是我的疑问:
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
,这是您的合并在列上)
您可以在源代码中使用分组,这样每个ID
只需要一个值,也可以事先清理源代码,使每个ID
只有一条记录
重复项
在源代码上(基于ID
,这是您的合并在列上)
您可以在源代码中使用分组,这样每个ID
只需要一个值,或者您可以事先清理源代码,使每个ID
ID
只有一条记录是标识列??yes ID是标识列您不能插入IDENTITY
列的值。如果它只是主键,那么它也不允许您添加重复的值。您必须添加要作为新表中的FK
插入的ID
。ID
是标识列??yes ID是标识列您不能插入IDENTITY
列的值。如果它只是主键,那么它也不允许您添加重复值。您必须将要插入的ID
作为FK
添加到新表中。