我有两个表,一个包含名称,另一个包含与每个名称对应的费率和其他数据。在我向表A中插入一个新名称后,我想让新生成的PK现在用来插入我的其他表B中的费率。
我该怎么做?我在线阅读scope_identity
,但我不确定如何使用它。
这是我到目前为止所做的:
SqlConnection con = new SqlConnection(pubvar.x);
SqlCommand command = con.CreateCommand();
command.CommandText ="Insert into A values('" +Name + "')";
SqlCommand command2 = con.CreateCommand();
command2.CommandText = "Insert into B values(....)";
SELECT SCOPE_IDENTITY();
con.Open();
command.ExecuteNonQuery();
con.Close();
答案 0 :(得分:2)
考虑到你所描述的情况,我认为没有必要从数据库中返回身份。您只需在一个命令中发出两个语句:
using (var cnx = new SqlConnection(pubvar.x))
using (var cmd = new SqlCommand
{
Connection = cnx,
CommandText = @"
insert into A (Name) values (@name)
insert into B (A_ID, Rate) values (scope_identity(), @rate)
",
Parameters =
{
new SqlParameter("@name", name),
new SqlParameter("@rate", .5m) //sample rate
}
})
{
cnx.Open();
cmd.ExecuteNonQuery();
}