我正在使用存储过程将数据插入到数据库中,当它插入时它会自动给出一个ID,这是一个标识,它也是表的主键。我还需要将数据插入到第二个表中,该表的ID是需要插入的列之一。但它的ID尚未创建,所以我想知道你们如何解决这个问题。我需要它,所以当他们提交我的表单时,它会插入用户,然后我需要将它添加到基本上会记录该用户被创建的表中。这可能吗。?我使用的是Microsoft SQL Server 2005中SQL插入到两个表中问题
感谢
我正在使用存储过程将数据插入到数据库中,当它插入时它会自动给出一个ID,这是一个标识,它也是表的主键。我还需要将数据插入到第二个表中,该表的ID是需要插入的列之一。但它的ID尚未创建,所以我想知道你们如何解决这个问题。我需要它,所以当他们提交我的表单时,它会插入用户,然后我需要将它添加到基本上会记录该用户被创建的表中。这可能吗。?我使用的是Microsoft SQL Server 2005中SQL插入到两个表中问题
感谢
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他们都在做什么。
使用输出子句从第一插入获取ID和使用在矿井二次插入该值。
检查第一次插入后scope_identity()系统函数的结果;它将包含先前插入的记录的ID(假定ID是使用标识列自动生成的)。正如评论中所述,这比使用@@身份更好,因为@@身份可能不准确,或者当数据库中存在触发器时或在高流量的情况下可能会被抢占时,会导致问题。
U可以使用SCOPE_IDENTITY()插入新身份()
您使用的是什么RDBMS? – 2011-03-29 15:04:00