将旧数据存储在一列中,并在同一个表中的另一列中更新新数据

时间:2011-09-07 15:48:47

标签: sql database asp-classic sql-update

我不是专业程序员,而是需要帮助的爱好者。这是我的挑战:

我为员工提供了一个充满数据的表格。

目前,我们的任何员工都可以访问我们网站上的“更新”网页,并在显示的上一个上输入姓氏在文本框中单击“提交”,他的姓氏将在数据库中更新。但是,我的主管希望将员工的以前的姓氏保留在与姓氏相同的表格中。她的想法是,当员工在文本框中输入姓氏时,它会触发数据库将其上一个姓氏存储在名为“Alias”的列中,然后在“LastName”列中更新其姓氏。我该如何处理?

这是表格的结构:

PeopleID (int)  
JobIDNum (int)  
EmployeeIDNum (varchar(25))  
Email (varchar(100))  
Password (varchar(50))  
LastName (varchar(50))  
FirstName (varchar(25))  
Deleted (char(1))  
Alias (varchar(50))  

我感谢我能得到的任何帮助和/或建议。

3 个答案:

答案 0 :(得分:0)

UPDATE TABLENAME
  SET Alias = LastName, LastName = @LastName 
WHERE PeopleID = @PeopleID

如果@LastName是具有值的参数,@PeopleID是相应人员的ID。

答案 1 :(得分:0)

建议您可以从ASP调用的存储过程。

 CREATE PROC UpdateEmp
    @EmpID  int,
    @LastName varchar(50),
    --all the others properties you need to update this person
 AS
 BEGIN

     UPDATE Employee
     SET Alias = LastName,
         LastName = @LastName,
         --all the other properties you want updated.
     WHERE PeopleID = @EmpID;

 END

在ASP代码中调用此存储过程,如下所示:

Dim cmd
Dim ln
Dim retCount    
Dim conn
Set conn= Server.CreateObject("ADODB.Connection")       
Set cmd = Server.CreateObject("ADODB.Command")      
conn.Open "some connection string"
With cmd
    .ActiveConnection = conn
    .Commandtext = "UpdateEmp"
    .CommandType = adCmdStoredProc
    .Parameters.Append .CreateParameter("@EmpID", adInteger, adParamInput, 10)
    .Parameters("@EmpID") = 22 'some Employee you get from your code
    .Parameters.Append .CreateParameter("@LastName", adVarChar, adParamInput, 50)
    .Parameters("@LastName") = "MyLastName" 'some Employee you get from your code
    .Execute ln, , adExecuteNoRecords
End With        
Set cmd = Nothing

答案 2 :(得分:0)

尝试此更新声明:

UPDATE Employee
Set LastName = @NewLastName,
    Alias = LastName
WHERE PeopleId = @Whatever