2

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

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

我的第一个插入是:

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:我搜索了这个问题,但是当涉及多个事务(来自不同的客户端)时,我只能找到有关此问题的答案。

4

1 回答 1

1

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

于 2013-04-25T11:34:31.973 回答