使用INSERT_IDENTITY - ADO.Net插入多个表

时间:2016-12-27 10:16:38

标签: c# sql-server ado.net

我想用ADO.NET在多个表中插入记录。

我想将一条新记录插入名为Professionals的表中。它有一个映射到不同表的外键。 表:

Tables

示例:

 cmd.CommandText = "insert T_Name select (Name.T_Name,Date.T_Name,DId.Date) values (@N,GETDATE(),???)from T_Name inner join Date ON Date.DId=T_Name.DId; ";
 cmd.Parameters.AddWithValue("@N", txt_Name.Text);

OR

...

如何一次在这些表中添加值?

1 个答案:

答案 0 :(得分:1)

为第一个表添加插入sql后

SELECT SCOPE_IDENTITY();

然后你得到最后一个插入的id。您可以使用第二个sql参数。

示例:

        var dateNow = DateTime.Now;
        var cmd = new SqlCommand("INSERT INTO Date (Date) VALUES (@Date);SELECT SCOPE_IDENTITY();", cnn);
        cmd.Parameters.AddWithValue("@Date", dateNow);
        var insertedId = cmd.ExecuteScalar();
        cmd = new SqlCommand("INSERT INTO T_Name (Name,Date,DId) VALUES (@Name,@Date,@DId);", cnn);
        cmd.Parameters.AddWithValue("@Name", "Test");
        cmd.Parameters.AddWithValue("@Date", dateNow);
        cmd.Parameters.AddWithValue("@DId", insertedId);
        cmd.ExecuteNonQuery(); //or ExecuteScalar() for get last insertedId