2024-09-28 03:23:54 发布
网友
我在琢磨如何在一个事务中添加2行,其中1行依赖于另一行。
INSERT INTO users (username) VALUES ('malcom.reynolds') INSERT INTO spaceships (name, owner) VALUES ('Serenity', <<Malcom Reynold's row ID>>)
我这样做的原因是我使用的库没有返回rowid,我需要尽可能少地提交事务,因为我要添加超过几百万条记录!在
我用的是:
有什么想法吗?真是太棒了:)
您可以在一个批处理语句中执行此操作:
declare @key as int; insert into users (username) values ('malcom.reynolds'); set @key = (select scope_identity()); insert into spaceships (name, owner) values ('Serenity', @key)
您可以使用T-SQLscope_identity从第一个INSERT语句返回新的ID。在
scope_identity
INSERT
在第一个INSERT之前,声明一个变量来保存新ID的值:
DECLARE @ReturnValue int;
在第一个INSERT之后,添加以下内容以设置该变量的值:
SELECT @ReturnValue = scope_identity()
然后,您可以在第二个INSERT中使用@ReturnValue变量来代替:
@ReturnValue
看http://msdn.microsoft.com/en-us/library/aa259185%28SQL.80%29.aspx
INSERT INTO users (username) VALUES ('malcom.reynolds'); INSERT INTO spaceships (name, owner) VALUES ('Serenity', SCOPE_IDENTITY() )
您可以在一个批处理语句中执行此操作:
您可以使用T-SQL
scope_identity
从第一个INSERT
语句返回新的ID。在在第一个
INSERT
之前,声明一个变量来保存新ID的值:在第一个
INSERT
之后,添加以下内容以设置该变量的值:SELECT @ReturnValue = scope_identity()
然后,您可以在第二个
^{pr2}$INSERT
中使用@ReturnValue
变量来代替:看http://msdn.microsoft.com/en-us/library/aa259185%28SQL.80%29.aspx
相关问题 更多 >
编程相关推荐