SQL插入两个表问题

时间:2011-03-29 15:03:15

标签: sql sql-server sql-server-2005 insert

我正在使用存储过程将数据插入到数据库中,当插入数据时,它会自动获得一个身份ID,它也是表的主键。我还需要将数据插入到第二个表中,该表的ID是需要插入的列之一。但它还没有创建ID,所以我想知道你们将如何解决这个问题。我需要它,所以当他们提交我的表单时,它会插入用户,然后我需要将它添加到一个基本上将记录正在创建的用户的表中。这可能吗。?我正在使用Microsoft SQL Server 2005。

由于

4 个答案:

答案 0 :(得分:5)

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会完成这项工作。

Here is a good article关于他们所做的一切。

答案 1 :(得分:2)

使用output子句从第一个插入中获取id,并在第二个插入中使用该值。

答案 2 :(得分:0)

在第一次插入后检查scope_identity()系统函数的结果;它将包含先前插入的记录的ID(假设ID是使用标识列自动生成的)。正如评论中所述,它比使用@@ identity更好,因为@@ identity在数据库中存在触发器时或在可以抢占查询的高流量情况下可能不准确或导致问题。

答案 3 :(得分:0)

U可以使用SCOPE_IDENTITY()

插入新身份
相关问题