Click here to Skip to main content
15,889,931 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hello Friends,

I Have Two Database Tables

Table A
StudID(it is Autogenerated by Setting Identity), Name, Contact, etc.

Table B
ID StudID Address City...



I want to store StudentName contact etc First then get the StudID and Save Data into B with retrived StudID Address into one Transaction.
Posted
Updated 27-Mar-11 5:19am
v2
Comments
Dalek Dave 27-Mar-11 11:20am    
Edited for Grammar and Corrected Column Header Names.
nitin bhoyate 28-Mar-11 8:35am    
Thanks

1. Insert into TableA
INSERT INTO TableA(...)VALUES(...)

2. Store last generated id
declare @StuID int; set @StuID=SCOPE_IDENTITY(); See SCOPE_IDENTITY()[^]

3 Insert into TableB
INSERT INTO TableB(StuID,...)VALUES(@StuID,...)
 
Share this answer
 
v3
Comments
Dalek Dave 27-Mar-11 11:20am    
Seems reasonable.
nitin bhoyate 28-Mar-11 8:26am    
can you provide sample code..
nitin bhoyate 28-Mar-11 8:34am    
Take a look at my code..


SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MRProjectConnectionString"].ConnectionString);
SqlCommand cmd;
con.Open();
string sql = "Declare @ChemistCode int;";
sql = sql + "Insert into Chemist(ChemistName,Qualification,Birthdate,Email,Website ,MobNo,HqName,Anniversary,Hobbies,other ,Submittedby,Status)Values(@ChemistName,@Qualification,@Birthdate,@Email,@Website ,@MobNo,@HqName,@Anniversary,@Hobbies,@other ,@Submittedby,@Status)";
sql = sql + " SET @ChemistCode = SCOPE_IDENTITY();";
sql = sql + "Insert into ChemistOfficeContactDetails(ChemistCode,AddressLine1,AddressLine2,City ,State,Landline,Fax)Values(@ChemistCode,@AddressLine1,@AddressLine2,@City ,@State,@Landline,@Fax)";
cmd = new SqlCommand(sql, con);
cmd.Parameters.Add("@ChemistName", SqlDbType.NVarChar).Value = TextBoxName.Text;
cmd.Parameters.Add("@Qualification", SqlDbType.NVarChar).Value = TextBoxQualification.Text;
cmd.Parameters.Add("@Birthdate", SqlDbType.SmallDateTime).Value = TextBoxBirthdate.Text;
cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = TextBoxEmail.Text;
cmd.Parameters.Add("@Website", SqlDbType.NVarChar).Value = TextBoxWebsite.Text;
cmd.Parameters.Add("@MobNo", SqlDbType.NVarChar).Value = TextBoxMobileNo.Text;
cmd.Parameters.Add("@HqName", SqlDbType.NVarChar).Value = DropDownListHqName.Text;
cmd.Parameters.Add("@Anniversary", SqlDbType.SmallDateTime).Value = TextBoxAnniversary.Text;
cmd.Parameters.Add("@Hobbies", SqlDbType.NVarChar).Value = TextBoxHobbies.Text;
cmd.Parameters.Add("@other", SqlDbType.NVarChar).Value = TextBoxOther.Text;
cmd.Parameters.Add("@Submittedby", SqlDbType.NVarChar).Value = "1";
cmd.Parameters.Add("@Status", SqlDbType.NVarChar).Value = "P";

cmd.Parameters.Add("@AddressLine1", SqlDbType.NVarChar).Value = "A";
cmd.Parameters.Add("@AddressLine2", SqlDbType.NVarChar).Value = "A";
cmd.Parameters.Add("@City", SqlDbType.NVarChar).Value = "A";
cmd.Parameters.Add("@State", SqlDbType.NVarChar).Value = "A";
cmd.Parameters.Add("@Landline", SqlDbType.NVarChar).Value = "A";
cmd.Parameters.Add("@Fax", SqlDbType.NVarChar).Value = "A";
cmd.ExecuteNonQuery();
con.Close();



ERROR:::

You Must Declare ChemistCOde
Costica U 28-Mar-11 18:21pm    
I don't see any problem.
Stop the program after line: cmd = new SqlCommand(sql, con);
and see how the cmd.CommandText looks.

Do you have column ChemistOfficeContactDetails.ChemistCode?
after first insert you must use of SCOPE_IDENTITY().
 
Share this answer
 
Just use a after trigger on table on A, You have to retieve StudID, and insert into Table B in that trigger only.
 
Share this answer
 
One alternative option is to define OUTPUT[^] clause and use the returning values in the next statements
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900