简体   繁体   中英

How to update only 2 columns of table and save as new record?

Assume I have SQL Database Table as Customer and columns of (it has primery key ID)table are like VisitDate,Company,CompanyRepresentative,City,Phone,E-mail,VisitNotes,Stuation(Lost,Signed etc.),VisitTime(1-2-3..)

I would like to update only VisitNotes and Stuation columns and save record as new row. So it should give me other fields same but VisitNotes and Stuation changed.

Please see below;

enter`  if (!string.IsNullOrEmpty(Session["ID"].ToString()))
            {

                SqlCommand cmdUpdate = new SqlCommand("UPDATE Customer_list SET Company=@Company,VisitDate=@VisitDate,Stuation=@Stuation,VisitNotes=@VisitNotes,City=@City,Phone=@Phone,Email=@Email,VisitTime=@VisitTime, WHERE ID='" + Session["ID"].ToString() + "'", connBizim);
                cmdUpdate.Parameters.AddWithValue("@VisitDate", Convert.ToDateTime(txtDate.Text));
                cmdUpdate.Parameters.AddWithValue("@Company", txtCompany.Text);

                cmdUpdate.Parameters.AddWithValue("@Phone", txtPhone.Text);
                cmdUpdate.Parameters.AddWithValue("@Stuation", DpStuation.Text);
                cmdUpdate.Parameters.AddWithValue("@EMAIL", txtEmail.Text);

                cmdUpdate.Parameters.AddWithValue("@VisitNotes", txtVisitNotes.Text);
                cmdUpdate.Parameters.AddWithValue("@City", txtCity.Text);
                cmdUpdate.Parameters.AddWithValue("@VisitTime", Convert.ToInt32(txtVisitTime.Text) + 1);                  
                conn.Open();
                cmdUpdate.ExecuteNonQuery();
                conn.Close();
                Session["ID"] = "";

            }
            else
            {
                SqlCommand cmdinsert = new SqlCommand("INSERT INTO Customer_list SET Company=@Company,VisitDate=@VisitDate,Stuation=@Stuation,VisitNotes=@VisitNotes,City=@City,Phone=@Phone,Email=@Email,VisitTime=@VisitTime, WHERE ID='" + Session["ID"].ToString() + "'", connBizim);
                cmdinsert.Parameters.AddWithValue("@VisitDate", Convert.ToDateTime(txtDate.Text));
                cmdinsert.Parameters.AddWithValue("@Company", txtCompany.Text);

                cmdinsert.Parameters.AddWithValue("@Phone", txtPhone.Text);
                cmdinsert.Parameters.AddWithValue("@Stuation", DpStuation.Text);
                cmdinsert.Parameters.AddWithValue("@EMAIL", txtEmail.Text);

                cmdinsert.Parameters.AddWithValue("@VisitNotes", txtVisitNotes.Text);
                cmdinsert.Parameters.AddWithValue("@City", txtCity.Text);
                cmdinsert.Parameters.AddWithValue("@VisitTime", Convert.ToInt32(txtVisitTime.Text)); 
                conn.Open();
                cmdinsert.ExecuteNonQuery();
                conn.Close();
                Session["ID"] = "";
                Response.Redirect("Customer_List.aspx");
            }`  

You can do it with INSERT INTO SELECT .

I have prepared a small demo for you. It is not for your example but it will help you to see how. You now need to adjust it to your specific example.

Here is a demo

For table:

create table Customer  (ID int, name varchar(10), VisitNotes  int, Stuation  int)

It would be like:

insert into Customer
select distinct id, name, 5, 6
from customer
where id = 1;

Change VisitDate and Stuation while selecting from table:

insert into test 
select 'NewVisitDate' as VisitDate ,Company,CompanyRepresentative,City,Phone,E-mail,
VisitNotes,'NewStuation' as Stuation  
from test;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM