Is there a way to get the actual results of SQL UPDATE
command (ie the table rows themselves), not just get the number of rows (other than by converting the UPDATE
command to a SELECT
)? I'm using mainly Postgres and Informix, but I'd be interested to hear about other database systems that have this feature, or perhaps a particular client that supports this.
-
3OUTPUT clause– Remus RusanuApr 11, 2012 at 21:54
1 Answer
Here's how you'd do something like that in SQL Server. Because an UPDATE
is essentially old data and new data, SQL Server exposes the deleted
and inserted
dynamic tables. You can work with them to get what the data looked like prior to the UPDATE
, and after the UPDATE
:
update HumanResources.Department
set GroupName = 'Testing Group Name'
output
deleted.DepartmentID as Old_DepartmentID,
inserted.DepartmentID as New_DepartmentID,
deleted.Name as Old_Name,
inserted.Name as New_Name,
deleted.GroupName as Old_GroupName,
inserted.GroupName as New_GroupName
where DepartmentID > 12
-
Thanks, and now I see there's also something similar in Postgres, the
RETURNING
clause. Apr 12, 2012 at 5:40