首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在一次SQL BulkCopy之后,有可能取回PrimaryKey ID吗?

在一次SQL BulkCopy之后,有可能取回PrimaryKey ID吗?
EN

Stack Overflow用户
提问于 2010-06-01 02:50:15
回答 7查看 17.4K关注 0票数 24

我正在使用C#和SqlBulkCopy。不过,我有个问题。我需要在一个表中执行批量插入,然后在另一个表中执行批量插入。

这两个是PK/FK关系。

Table A
Field1 -PK auto incrementing (easy to do SqlBulkCopy as straight forward)

Table B
Field1 -PK/FK - This field makes the relationship and is also the PK of this table. It is not auto incrementing and needs to have the same id as to the row in Table A.

因此,这些表具有一对一的关系,但我不确定如何取回批量插入创建的所有这些PK Id,因为我需要将它们用于表B。

编辑

我能做这样的事情吗?

SELECT * 
FROM Product
WHERE NOT EXISTS (SELECT * FROM ProductReview WHERE Product.ProductId = ProductReview.ProductId AND Product.Qty = NULL AND Product.ProductName != 'Ipad')

这将查找刚刚使用sql大容量复制插入的所有行。我不确定如何从这里获得结果,然后从SP中使用它们进行批量插入。

我能看到的唯一问题是,如果用户一次只做一条记录,同时运行this语句,它可能会尝试在"Product Review Table“中插入一行两次。

假设我有一个用户使用手动方式,另一个用户几乎同时使用大众方式。

手动方式。 1.用户提交数据2.制作Linq to sql Product对象,填充数据并提交。3.此对象现在包含linq 4.为Product review表创建了另一个ProductId to sql对象,并插入了该对象(发送了步骤3中的产品Id )。

批量方式。 1.用户从共享数据的用户那里抓取数据。2.抓取来自共享用户的所有Product行。3.对Product行执行SQL大容量复制插入。4.我的SP选择只存在于Product表中且满足某些其它条件的所有行。5.对这些行执行成批插入。

那么,如果步骤3(手动方式)与步骤4(大众方式)同时发生,会发生什么情况?我认为它会尝试将同一行插入两次,从而导致主约束执行。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2945414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档