我不熟悉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)
注意:
DeviceHistoryID
是IDENTITY
整数列,因此它对历史记录表中的每个条目都是唯一的。
CertificateID
在TestedDevices
表中是唯一的。预计在历史表中不是唯一的。
代码用C#4.5
也许这是存储过程的一种情况,我从未试图创建或使用它。或者,也许使用游标?不知道!这就是为什么我谦虚地要求更有经验的SQL来帮助:)
答案 0 :(得分:1)
不清楚您是否只想将Caller和RecordDate分配给最近的记录,或者是否可以将其分配给所有历史记录。
对于所有记录,我相信你可以做类似
的事情SELECT *, @caller AS Caller, @date AS RecordDate INTO dbo.TestedDevicesHistory
FROM dbo.TestedDevices WHERE CertificateID=@cert