我有一个C#应用程序,并希望返回由TSQL UPDATE TOP 1更新的记录 没有做第二次查询。这可能吗?
答案 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