我有此代码:
string query = @"UPDATE [dbo].[TrippingTariffTransaction]
SET [IsActive] = 0
WHERE Id in (SELECT Id
FROM [dbo].[TrippingTariffTransaction]
WHERE Trip = @Trip
AND TrippingTariffId = @TrippingTariffId);";
query += @"INSERT INTO [dbo].[TrippingTariffTransactionAuditTrail]
(LogDatetime, MasterlistId, ComputerName, TrippingTariffTransactionID, Activity)
SELECT
GETDATE(), @MasterlistId, @ComputerName, Id, @Activity
FROM
[dbo].[TrippingTariffTransaction]
WHERE
Trip = @Trip AND TrippingTariffId = @TrippingTariffId";
如何优化此代码。我有多余的选择。在此先感谢:)
答案 0 :(得分:1)
您可以使用OUTPUT
子句
update t
set IsActive = 0
OUTPUT getdate(), @MasterlistId, @ComputerName, INSERTED.Id, @Activity
INTO TrippingTariffTransactionAuditTrail
( LogDatetime, MasterlistId, ComputerName, TrippingTariffTransactionID, Activity)
FROM TrippingTariffTransaction t
WHERE t.Trip = @Trip
AND t.TrippingTariffId = @TrippingTariffId
答案 1 :(得分:0)
您可以使用temp
表:
SELECT Id INTO #T
FROM [dbo].[TrippingTariffTransaction]
WHERE Trip = @Trip
AND TrippingTariffId = @TrippingTariffId
UPDATE [dbo].[TrippingTariffTransaction]
SET [IsActive] = 0
WHERE Id in (SELECT Id FROM #T)
INSERT INTO [dbo].[TrippingTariffTransactionAuditTrail]
(LogDatetime, MasterlistId, ComputerName, TrippingTariffTransactionID, Activity)
SELECT
GETDATE(), @MasterlistId, @ComputerName, Id, @Activity
FROM #T
DROP TABLE #T