Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the new record primary key ID from SQL insert query to insert same value into another table?

I have the following C#

protected void add_button_Click(object sender, EventArgs e)
{
    string teamname = team_name_tb.Text;
    string teamstatus = "Not Started";
    string teamnotes = team_notes_tb.Text;
    string sprintid = sprint_select.SelectedValue;

    string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection myConnection = new SqlConnection(ConnectionString);

    myConnection.Open();

            String query = "INSERT INTO teams (team_name, status, notes) 
                            VALUES (@team_name, @status, @notes); 
                            INSERT INTO sprints_vs_teams (sprint_id, team_id)                    
                            VALUES (@sprint_id, @team_id)";

            SqlCommand myCommand = new SqlCommand(query, myConnection);
            myCommand.Parameters.AddWithValue("@team_name", teamname);
            myCommand.Parameters.AddWithValue("@status", teamstatus);
            myCommand.Parameters.AddWithValue("@notes", teamnotes);
            myCommand.Parameters.AddWithValue("@sprint_id", sprintid);
            myCommand.Parameters.AddWithValue("@team_id", ????);

            myCommand.ExecuteNonQuery();
            myConnection.Close();
}

In the teams table the primary key is team_id I want to be able to pull the value of this and insert it into the team_id field in the lookup table I have sprints_vs_teams. Is there a method of doing this, if so could you possibly provide my with some guidance, please be aware I am very new to C#. Any help would be greatly appreciated.

Amended code

protected void add_button_Click(object sender, EventArgs e)
{
    String user = Session["user_id"].ToString();
    string teamname = team_name_tb.Text;
    string teamstatus = "Not Started";
    string teamnotes = team_notes_tb.Text;
    string sprintid = sprint_select.SelectedValue;

string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection myConnection = new SqlConnection(ConnectionString);

myConnection.Open();

String query = "Declare @team_identity int INSERT INTO teams (team_name, status, notes) VALUES (@team_name, @status, @notes); set @team_identity = scope_identity() INSERT INTO sprints_vs_teams (sprint_id, team_id) VALUES (@sprint_id, @team_identity)";

       SqlCommand myCommand = new SqlCommand(query, myConnection);
        myCommand.Parameters.AddWithValue("@team_name", teamname);
        myCommand.Parameters.AddWithValue("@status", teamstatus);
        myCommand.Parameters.AddWithValue("@notes", teamnotes);
        myCommand.Parameters.AddWithValue("@sprint_id", sprintid);

        myCommand.ExecuteNonQuery();
        myConnection.Close();
}

I amended my code with @Sick 's answer, however it didn't seem to work. If anyone could advise on where I may have went wrong it would be greatly appreciated.

like image 947
mcclosa Avatar asked Sep 26 '22 07:09

mcclosa


1 Answers

Use SCOPE_IDENTITY

Declare @team_identity int

INSERT INTO teams (team_name, status, notes) 
                            VALUES (@team_name, @status, @notes);

set @team_identity = scope_identity()

INSERT INTO sprints_vs_teams (sprint_id, team_id)                    
                            VALUES (@sprint_id, @team_identity)"
like image 148
Pரதீப் Avatar answered Sep 30 '22 06:09

Pரதீப்