c# - 如何根据最高 IDENTITY 条目提取 SQL 表条目并更新两列

标签 c# sql-server database

我不太精通 SQL 操作,希望获得一些帮助来完成我需要用代码完成的任务。我编写了一个基于云的应用程序,它可以访问包含测试结果的 SQL 表——设备 ID、序列号、测试结果等。

有一个用例,现场的某个人会激活一个菜单,在该菜单中更新此表。当更新设备测试结果表时,我想将 OLD 信息存储在设备测试历史表中。这样,我们就可以回头看看随着时间的推移发生了什么变化。

所以我需要从 TestedDevice 表中提取所有列,将它们插入到 TestedDeviceHistory 表中,并包含一些附加信息;当前日期和运算符(operator)的 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. DeviceHistoryID 是一个 IDENTITY 整数列,因此它对于历史表中的每个条目都是唯一的。

  2. CertificateIDTestedDevices 表中是唯一的。它在历史表中应该不是唯一的。

  3. 代码是用C# 4.5编写的

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

最佳答案

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

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

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

关于c# - 如何根据最高 IDENTITY 条目提取 SQL 表条目并更新两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515481/

相关文章:

c# - 如何将枚举对象绑定(bind)到按钮的背景?

c# - 单实例 Windows 窗体应用程序以及如何获取对它的引用?

.net - 用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败

sql-server - 获取特定时间段内的查询执行次数

python - 将 Django 与包含多个表的遗留数据库一起使用

基于 2 列的 ORDER BY 的 MySQL rowrank

c# - c# 中标签的引用(或指针)数组

c# - Local/Express IIS/External Host 分别带来了什么?

sql-server - 在 CTE (With) 中设置和定义变量并在另一个 CTE 中使用它们

sql-server - 无法将 Integration Services 项目的目标服务器版本设置为 SQL Server 2012