SQL Server - 在SAME事务内的表中选择插入的行

时间:2013-04-25 10:33:12

标签: sql-server transactions

我需要确认一个“棘手”的问题。 我在一个事务中,我在表中插入一些行。    之后,查询同一个表,并根据结果,我插入另一个表。

我的问题是:插入第二个表时第一个表中插入的行是否可见? (我需要插入的行可见)。

我的第一个插入是:

INSERT INTO BioUsers Select NewId(),A.BadgeNr,GetDate(),A.PersNr
        FROM (
            SELECT CB.Persnr,C.BadgeNr FROM CurBioDistribution CB 
                INNER JOIN CUR C ON C.PersNr = CB.PersNr 
                WHERE 
                    CB.[Type] = 1 
                    AND CB.GroupNr = @Nr 
                    AND CB.PersNr IN (SELECT PersNr FROM CurBioDistribution WHERE GroupNr = @Nr) 
                    EXCEPT (SELECT PersNr, BadgeId as BadgeNr FROM BioUsers)
            ) A 

我希望将第一个表中的所有BioUserID插入另一个表中,该表包含字段BioUserID,但前提是它们尚未包含在其中。因此,当从第一个中选择时,我也想获得插入的行。

PS:我搜索了这个问题,但是当涉及多个交易(来自不同的客户)时,我只能找到关于这个问题的答案。

1 个答案:

答案 0 :(得分:1)

如果两个插入都在同一个事务中,那么是。 如果没有,那么您就处于您所描述的多用户场景中。多用户实际上是误导,多交易会更正确。