返回UPDATE TOP 1修改的记录

时间:2011-09-16 05:37:18

标签: c# .net tsql

我有一个C#应用程序,并希望返回由TSQL UPDATE TOP 1更新的记录 没有做第二次查询。这可能吗?

3 个答案:

答案 0 :(得分:3)

您可以使用output子句。

update top (1) T
set Col = 'x'
output inserted.*
from YourTable as T

答案 1 :(得分:3)

您可以使用OUTPUT,例如:

DECLARE @tmp TABLE (Id int not null)
UPDATE TOP (1) [YourTable]
SET [YourColumn] = newValue
OUTPUT inserted.Id INTO @tmp

SELECT * FROM @tmp

(添加更多列以适应)

请注意 general 案例中的INTO是必要的,以避免触发器出现问题;否则通常会看到:

  

如果语句包含没有INTO子句的OUTPUT子句,则DML语句的目标表'YourTable'不能具有任何已启用的触发器。

答案 2 :(得分:1)

是。这是可能的 。

DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25,
ModifiedDate = GETDATE() 
OUTPUT inserted.BusinessEntityID,
   deleted.VacationHours,
   inserted.VacationHours,
   inserted.ModifiedDate
INTO @MyTableVar;
--Display the result set of the table variable.
SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate
FROM @MyTableVar;
GO 
--Display the result set of the table.
SELECT TOP (10) BusinessEntityID, VacationHours, ModifiedDate
FROM HumanResources.Employee;
GO

参考:http://msdn.microsoft.com/en-us/library/ms177523.aspx#CaptureResults