Method 1: Public static bool adjustleave (oaleaveinfo, dtable dtdetail, decimal region, string str_userid, string str_plantid, decimal dldours) {arraylist Al = new arraylist (); // backup original record string strsql = "insert into partition (origin_sid, user_id, dept_sid, pst_sid, date_from," + "date_to, lc_sid, reason, com_hour, al_day, rfs_sid, rf_sid, curr_node_no, curr_approver, "+" province, region, region, "+" create_person, create_date, update_person, update_date, adjust_person, adjust_date) "+" select Sid, user_id, dept_sid, pst_sid, date_from, "+" date_to, lc_sid, reason, com_hour, al_day, rfs_sid, rf_sid, curr_node_no, curr_approver, "+" region, "+" create_person, create_date, update_person, update_date, '"+ bllpubsafe. convertstring (oaleaveinfo. updateperson) + "'adjust_person," + "getdate () as adjust_date from oa_leave (nolock) where Sid = '" + oaleaveinfo. sid + "'"; Al. add (strsql); strsql = "insert into oa_leave_detail_origin (p_sid, origin_sid, origin_p_sid, no, leave_category, tick, leave_days," + "date_from, date_to, hours) "+" select (select scope_identity (), Sid, p_sid, no, leave_category, tick, leave_days, date_from, date_to, hours "+" from oa_leave_detail "+" where p_sid = '"+ oaleaveinfo. sid + "'"; Al. add (strsql); // original table stringbuilder sbsql = new stringbuilder (); sbsql. append ("Update oa_leave set date_from = '" + oaleaveinfo. datefrom + "',"); sbsql. append ("date_to = '" + oaleaveinfo. dateto + "',"); sbsql. append ("reason = '" + oaleaveinfo. reason + "',"); // sbsql. append ("lc_sid = '" + bllpubsafe. convertstring (oaleaveinfo. lcsid) + "',"); // sbsql. append ("com_hour = '" + oaleaveinfo. comhour + "',"); // sbsql. append ("al_day = '" + oaleaveinfo. alday + "'"); sbsql. append ("leave_total_days = '" + oaleaveinfo. leavetotaldays + "',"); sbsql. append ("leave_total_real_days = '" + oaleaveinfo. leavetotalrealdays + "',"); sbsql. append ("leave_total_hours = '" + oaleaveinfo. leavetotalhours + "'"); sbsql. append ("where Sid = '" + oaleaveinfo. sid + "'"); Al. add (sbsql. tostring (); // from the table if (dtdetail. rows. count> 0) {sbsql = new stringbuilder (); sbsql. append ("delete from oa_leave_detail where p_sid = '" + oaleaveinfo. sid + "'"). append ("delete from oa_compensative_detail where leave_sid = '" + oaleaveinfo. sid + "'"); Al. add (sbsql. tostring ();} dbhelpersql. executesqltran (Al); datatable dttemp = BLL. HR. bll_hrcommon.getcommtable ("select * From fn_oa_leave_left_timeaddmodifytep ('" + str_plantid + "', '" + bllpubsafe. convertstring (str_userid) + "')"); Using (sqlconnection conn = new sqlconnection (dbhelpersql. connectionstring) {Conn. open (); sqlcommand cmd = new sqlcommand (); cmd. connection = conn; sqltransaction Tx = Conn. begintransaction (); cmd. transaction = TX; try {// from the table for (INT I = 0; I <dtdetail. rows. count; I ++) {sbsql = new stringbuilder (); If (dl_olderyixiunianjia.tostring (). trim (). length> 0) {// dlhourday if (dtdetail. rows [I] ["no"]. tostring () = "C") {sbsql. append ("Update kq_empyearvac set vac_been = (vac_been +" + convert. todecimal (dtdetail. rows [I] ["leave_days"]. tostring () + "-" + dl_olderyixiunianjia + ") Where plant_id = '" + str_plantid + "' and vac_year = '" + datetime. now. year + "'and employee_id ='" + str_userid + "'"); cmd. commandtext = sbsql. tostring (); cmd. executenonquery ();} else if (I = 0) {sbsql. append ("Update kq_empyearvac set vac_been = (vac_been +" + 0 + "-" + dl_olderyixiunianjia + ") where plant_id = '"+ str_plantid +"' and vac_year = '"+ datetime. now. year + "'and employee_id ='" + str_userid + "'"); cmd. commandtext = sbsql. tostring (); cmd. executenonquery () ;}} if (dtdetail. rows [I] ["no"]. tostring () = "D") {sbsql. append ("insert oa_leave_detail (No, leave_category, tick, leave_days, date_from, date_to, p_sid, hours) values ("); sbsql. append ("'" + dtdetail. rows [I] ["no"]. tostring () + "',"); sbsql. append ("'" + dtdetail. rows [I] ["leave_category"]. tostring () + "',"); sbsql. append ("'" + convert. toint32 (dtdetail. rows [I] ["tick"]) + "',"); sbsql. append ("'" + convert. todecimal (dtdetail. rows [I] ["leave_days"]. tostring () + "',"); sbsql. append ("'" + dtdetail. rows [I] ["date_from"]. tostring () + "',"); sbsql. append ("'" + dtdetail. rows [I] ["date_to"]. tostring () + "',"); sbsql. append ("'" + oaleaveinfo. sid + "',"); sbsql. append ("'" + convert. todecimal (dtdetail. rows [I] ["hours"]. tostring () + "')"); // main table cmd. commandtext = sbsql. tostring (); cmd. executenonquery (); // obtain the ID cmd. commandtext = "select scope_identity ()"; string strmid = cmd. executescalar (). tostring (); decimal dltemp = 0; decimal dltemp1 = 0; dltemp1 = convert. todecimal (dtdetail. rows [I] ["leave_days"]. tostring () * dldours + convert. todecimal (dtdetail. rows [I] ["hours"]. tostring (); For (Int J = 0; j <dttemp. rows. count; j ++) {sbsql = new stringbuilder (); If (BLL. HR. bll_hrcommon.returndecimal (dttemp. rows [J] ["lefttime"]. tostring ()-dltemp1> 0) {sbsql. append ("insert oa_compensative_detail (overtime_sid, cps_sid, cps_hours, leave_sid) values ('" + dttemp. rows [J] ["Sid"]. tostring () + "','" + strmid + "','" + dltemp1 + "','" + oaleaveinfo. sid + "')"); cmd. commandtext = sbsql. tostring (); cmd. executenonquery (); break;} else {dltemp = BLL. HR. bll_hrcommon.returndecimal (dttemp. rows [J] ["lefttime"]. tostring (); If (dltemp1-dltemp> 0) {sbsql. append ("insert oa_compensative_detail (overtime_sid, cps_sid, cps_hours, leave_sid) values ('" + dttemp. rows [J] ["Sid"]. tostring () + "','" + strmid + "','" + dltemp + "','" + oaleaveinfo. sid + "')"); dltemp1 = dltemp1-dltemp; cmd. commandtext = sbsql. tostring (); cmd. executenonquery ();} else {sbsql. append ("insert oa_compensative_detail (overtime_sid, cps_sid, cps_hours, leave_sid) values ('" + dttemp. rows [J] ["Sid"]. tostring () + "','" + strmid + "','" + dltemp1 + "','" + oaleaveinfo. sid + "')"); cmd. commandtext = sbsql. tostring (); cmd. executenonquery (); break ;}}} else {sbsql = new stringbuilder (); sbsql. append ("insert oa_leave_detail (No, leave_category, tick, leave_days, date_from, date_to, p_sid, hours) values ("); sbsql. append ("'" + dtdetail. rows [I] ["no"]. tostring () + "',"); sbsql. append ("'" + dtdetail. rows [I] ["leave_category"]. tostring () + "',"); sbsql. append ("'" + convert. toint32 (dtdetail. rows [I] ["tick"]) + "',"); sbsql. append ("'" + convert. todecimal (dtdetail. rows [I] ["leave_days"]. tostring () + "',"); sbsql. append ("'" + dtdetail. rows [I] ["date_from"]. tostring () + "',"); sbsql. append ("'" + dtdetail. rows [I] ["date_to"]. tostring () + "',"); sbsql. append ("'" + oaleaveinfo. sid + "',"); sbsql. append ("'" + convert. todecimal (dtdetail. rows [I] ["hours"]. tostring () + "')"); cmd. commandtext = sbsql. tostring (); cmd. executenonquery () ;}} Tx. commit ();} catch (system. data. sqlclient. sqlexception e) {Tx. rollback (); throw new exception (E. message) ;}} return true;} Method 2: You can use create trigger truser_insert on tbuser for insert asselect @ identitygo to obtain the last identifier method 3: you can also set nocount on; insert into tbuser (a, B) values ("A", "B"); select @ identity; get ID