可能重复:
获取插入行标识的最佳方法?
假设我第一次使用 SQL Server 2012 构建拍卖数据库。
有人创建了一个拍卖列表,它被插入到数据库中,并被赋予了一个新的唯一 AuctionID。随着拍卖的插入,还有许多其他数据需要存储并与拍卖相关联,例如图像、产品属性等。
有一个包含基本拍卖数据的表,然后是其他表来存储允许与拍卖的多对多关系的所有其他信息。
现在,在保存有关拍卖数据的其他表中,至少有一列包含 AuctionID,另一列包含一些其他信息,例如产品规格。
我实现这一点的方法(到目前为止)是首先插入基本的拍卖列表,然后让数据库给它一个新的 AuctionID。极好的。接下来我这样做:
SELECT TOP 1 AuctionID FROM Auction
ORDER BY Timestamp DESC
这应该返回最后插入的 AuctionID,如果在插入后立即运行应该是正确的。
然后,我获取此 AuctionID,并在将附加信息片段插入另一个表时使用该值,从而创建多对多关系。中提琴!
但是,当同时发生数百万个事务时,这是正确的方法吗?所以理论上插入可能发生在彼此相隔几毫秒的时间内。在插入发生和我检索最后插入的 AuctionID 之间,我可能会得到错误的 AuctionID。
任何人都可以原谅我的新手帖子并建议最好的方法吗?我面前有很多 SQL 书籍,但找不到与此相关的任何内容。