如何基于最高IDENTITY条目提取SQL表条目并更新两列

时间:2014-10-22 19:25:28

标签: c# sql-server database

我不熟悉SQL操作,并希望在代码中完成我需要完成的任务。我编写了一个基于云的应用程序,可以访问包含测试结果的SQL表 - 设备ID,序列号,测试结果等。

有一个用例,该字段中的某个人将激活一个菜单,其中发生对该表的更新。更新设备测试结果表时,我想将OLD信息存储在设备测试历史记录表中。通过这种方式,我们可以回过头来看看随着时间的推移会发生什么变化。

所以我需要从TestedDevice表中提取所有列,将它们插入到TestedDeviceHistory表中,并包含一些其他信息;当前日期和运营商的ID。 (这是仅在TestedDeviceHistory

中找到的两个新列

首先,我正在使用SELECT INTO命令,如下所示:

SELECT * 
INTO dbo.TestedDevicesHistory 
FROM dbo.TestedDevices 
WHERE CertificateID = @cert

然后我正在尝试这个(显然已损坏)SQL命令:

UPDATE dbo.TestedDeviceHistory 
SET Caller = @caller, 
    RecordDate = @date 
WHERE DeviceHistoryID = MAX(DeviceHistoryID)

注意:

  1. DeviceHistoryIDIDENTITY整数列,因此它对历史记录表中的每个条目都是唯一的。

  2. CertificateIDTestedDevices表中是唯一的。预计在历史表中不是唯一的。

  3. 代码用C#4.5

  4. 编写

    也许这是存储过程的一种情况,我从未试图创建或使用它。或者,也许使用游标?不知道!这就是为什么我谦虚地要求更有经验的SQL来帮助:)

1 个答案:

答案 0 :(得分:1)

不清楚您是否只想将Caller和RecordDate分配给最近的记录,或者是否可以将其分配给所有历史记录。

对于所有记录,我相信你可以做类似

的事情
SELECT *, @caller AS Caller, @date AS RecordDate INTO dbo.TestedDevicesHistory
FROM dbo.TestedDevices WHERE CertificateID=@cert