简体   繁体   中英

How to pull a SQL Table entry based on highest IDENTITY entry and update two columns

I'm not well versed in SQL operations, and would like some help with a task I need to complete in code. I have written a cloud based app that accesses a SQL table containing test results - device ID's, serial numbers, test results etc.

There is a use-case where someone in the field would activate a menu where an update to this table occurs. When the device test result table is updated, I want to store the OLD information in a device test history table. This way, we can go back and see what was changed over time.

So I need to pull all the columns from the TestedDevice table, insert them into TestedDeviceHistory table, and include some additional information; the current date and the operator's id. (these are two new columns found only in TestedDeviceHistory )

At first, I'm using a SELECT INTO command, as follows:

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

Then I'm attempting this (obviously broken) SQL command:

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

Notes:

  1. DeviceHistoryID is an IDENTITY integer column, so it's unique for each entry made in the history table.

  2. CertificateID is unique in the TestedDevices table. It is expected NOT to be unique in the history table.

  3. The code is written in C# 4.5

Maybe this is a case for a stored procedure, which I have never attempted to create or use. Or, perhaps the use of a cursor? Don't know! This is why I'm humbly asking for the more experienced with SQL to help :)

Not clear on if you only want to assign the Caller and RecordDate to the most recent record, or if it could be assigned to all the history records.

For all records, I believe you can do something like

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM