Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有触发更新查询的触发器的SQLBulk Copy_Sql_Triggers_Sqlbulkcopy - Fatal编程技术网

带有触发更新查询的触发器的SQLBulk Copy

带有触发更新查询的触发器的SQLBulk Copy,sql,triggers,sqlbulkcopy,Sql,Triggers,Sqlbulkcopy,我使用SQLBulkCopy将记录从excel工作表插入SQL 代码对我来说运行良好 但我必须触发基于触发器的插入 在触发器中,我根据插入的在另一个表中插入记录 这也很好 但是,如果我检查另一个表已经有了我试图插入和更新的记录,那么这对我不起作用 我怎样才能解决我的问题 如果您使用的是SQL server 2008,请在触发器中使用Merge语句 例如: MERGE INTO dbo.Table1 AS t USING dbo.inserted AS i ON t.id= i.i

我使用
SQLBulkCopy
将记录从excel工作表插入SQL

代码对我来说运行良好

但我必须触发基于触发器的插入

在触发器中,我根据插入的
在另一个表中插入记录

这也很好

但是,如果我检查另一个表已经有了我试图插入和更新的记录,那么这对我不起作用


我怎样才能解决我的问题

如果您使用的是SQL server 2008,请在触发器中使用Merge语句

例如:

MERGE INTO dbo.Table1 AS t
USING dbo.inserted AS i
        ON t.id= i.id
WHEN MATCHED THEN
    UPDATE SET
      t.col1= i.col1,
      t.col2= i.col2
WHEN NOT MATCHED THEN 
      INSERT (col1, col2)
      VALUES (i.col1, i.col2)

如果您使用的是SQL server 2008,请在触发器中使用Merge语句

例如:

MERGE INTO dbo.Table1 AS t
USING dbo.inserted AS i
        ON t.id= i.id
WHEN MATCHED THEN
    UPDATE SET
      t.col1= i.col1,
      t.col2= i.col2
WHEN NOT MATCHED THEN 
      INSERT (col1, col2)
      VALUES (i.col1, i.col2)

---------------------------------------------------------MERGE语句多次尝试更新或删除同一行。当目标行与多个源行匹配时,会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多与一个源行匹配,或使用GROUP BY子句对源行进行分组。----------------------------好的------------------我认为您没有使用正确的键来匹配和更新表。实际上,我发现此错误是由于两个表中都没有主键。对于Merge语句,主键是must,我必须匹配正确的键,但这两个都不是主键---------------------------------MERGE语句多次尝试更新或删除同一行。当目标行与多个源行匹配时,会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多与一个源行匹配,或使用GROUP BY子句对源行进行分组。----------------------------好的------------------我认为您没有使用正确的键来匹配和更新表。实际上,我发现这个错误是因为两个表中都没有主键。对于Merge语句,主键是must,我必须匹配正确的键,但这两个都不是主键