首页 > 解决方案 > 如何仅更新表的 2 列并另存为新记录?

问题描述

假设我有 SQL 数据库表作为客户,并且(它有主键 ID)表的列类似于 VisitDate、Company、CompanyRepresentative、City、Phone、E-mail、VisitNotes、Stuation(Lost、Signed 等)、VisitTime(1- 2-3..)

我只想更新 VisitNotes 和 Stuation 列并将记录另存为新行。所以它应该给我其他字段相同但 VisitNotes 和 Stuation 改变了。

请看下文;

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");
            }`  

标签: c#sqltsql

解决方案


你可以用INSERT INTO SELECT.

我为你准备了一个小演示。这不是你的例子,但它会帮助你了解如何。您现在需要根据您的具体示例对其进行调整。

这是一个演示

对于表:

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

就像:

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

推荐阅读