我正在使用存储过程将数据插入到数据库中,当数据被插入时,它会自动获得一个身份识别的 ID,并且它也是表的主键。我还需要将数据插入到第二个表中,其中该 ID 是需要插入的列之一。但是,如果 ID 还没有被创建,那么我想知道你们如何解决这个问题。我需要在用户提交表单后将其插入到文档记录用户创建的基本表格中。这可能吗?我正在使用 Microsoft SQL Server 2005。
谢谢
谢谢
INSERT INTO Table1 (SomeColumn) Values ('SomeValue')
DECLARE @NewIdent int
SELECT @NewIdent = SCOPE_IDENTITY()
INSERT INTO Table2 (SomeColumn, T1ID) VALUES ('SomeValue',@NewIDent)
您可以查看 @@IDENTITY、SCOPE_IDENTITY() 和 IDENT_CURRENT,以确定哪个最适合您的需求。我认为 SCOPE_IDENTITY 可以胜任。
这篇文章讲解了它们的区别,值得一读。
使用输出语句来获取第一次插入操作的id值,并在第二次插入操作中使用该值。
在第一次插入后检查scope_identity()系统函数的结果;它将包含先前插入记录的ID(假设ID是使用标识列自动生成的)。正如评论中所述,这比使用@@identity更好,因为@@identity可能不准确或在数据库中存在触发器或高流量情况下可能会导致问题。
您可以使用SCOPE_IDENTITY()获取新插入的身份标识