我有 2 个表,我想在其中一个接一个地插入数据。第一个表的主键在第二个。是否有任何 C# 函数,以便我可以将第一个表的主键插入到另一个表中,而无需任何选择查询?
问问题
321 次
3 回答
2
您可以使用执行插入并将标识值返回给调用者的存储过程来完成它。
CREATE PROCEDURE procedure1
AS
BEGIN
DECLARE @id int;
INSERT INTO [table1] (col1) VALUES ('Foo');
SET @id = SCOPE_IDENTITY();
INSERT INTO [table2] (col1, col2) VALUES (@id, 'Bar');
RETURN @id;
END
于 2012-06-05T12:04:35.197 回答
1
您可能会考虑在插入语句中使用 OUTPUT 子句。
于 2012-06-05T14:39:00.380 回答
-1
不确定我是否理解您的问题,但我认为您想在不咨询服务器的情况下知道主键。
在这种情况下,您需要使用 guid 作为可以在 C# 中生成客户端的主键。标识列将不起作用,因为它们是由 sql server 生成的。
或者,您可以创建一个存储过程,在服务器上为您执行插入操作,并将客户端的身份留空。
更新 1
要从 sql server 获取最新生成的身份,您可以使用
SCOPE_IDENTITY
(这相当于 mysql_insert_id() )
还有一些其他选择,即
- @@身份
- SCOPE_IDENTITY()
- IDENT_CURRENT
于 2012-06-05T11:55:39.003 回答