I tried to insert a new row into two tables, between which there is a relationship. I wrote a stored procedure as follows.
ALTER PROCEDURE InsertUserProfile ( @UserID varchar(10), @Pass varchar(50), @Enabled int, @Permission int, @Rank int, @FName varchar(50), @LName varchar(50), @Phone varchar(50), @Email1 varchar(50), @Email2 varchar(50) ) AS BEGIN TRANSACTION INSERT INTO tbl_user_login VALUES (@UserID, @Pass, @Enabled, @Permission, @Rank) IF @@ERROR <> 0 BEGIN ROLLBACK RETURN END INSERT INTO tbl_user_profile VALUES (@FName, @LName, @Phone, @Email1, @Email2) IF @@ERROR <> 0 BEGIN ROLLBACK RETURN END COMMIT
It follows ASP.NET code
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnString"].ConnectionString); SqlCommand cmd = new SqlCommand("dbo.InsertUserProfile", sqlConn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@UserID", DbType.String).Value = txtUserID.Text; cmd.Parameters.Add("@Pass", DbType.String).Value = txtPass.Text; cmd.Parameters.Add("@Enabled", DbType.Int32).Value = 1; cmd.Parameters.Add("@Permission", DbType.Int32).Value = Convert.ToInt32(ddlPermission.SelectedValue); cmd.Parameters.Add("@Rank", DbType.Int32).Value = Convert.ToInt32(ddlRank.SelectedValue); cmd.Parameters.Add("@FName", DbType.String).Value = txtFName.Text; cmd.Parameters.Add("@LName", DbType.String).Value = txtLName.Text; cmd.Parameters.Add("@Phone", DbType.String).Value = txtPhone.Text; cmd.Parameters.Add("@Email1", DbType.String).Value = txtEmail1.Text; cmd.Parameters.Add("@Email2", DbType.String).Value = txtEmail2.Text; sqlConn.Open(); int rows = cmd.ExecuteNonQuery(); sqlConn.Close();
But I get the following error.
The INSERT statement contradicted the FOREIGN KEY constraint "FK_tbl_user_profile_tbl_user_login". The conflict occurred in the database "My DB Location", table "dbo.tbl_user_login", column identifier. approval completed.
I am new to Stored Procedures, so any suggestions, how can I fix it so that I can insert data into two tables?
DIAGRAM TABLE
tbl_user_login ID (int) UserID (varchar10) Pass (varchar50) Enabled (int) Permission (int) Rank (int) tbl_user_profile ID (int) FName (varchar50) LName (varchar50) Phone (varchar50) Email1 (varchar50) Email2 (varchar50)