2008-09-04 40 views

回答

2

爲此在兩個語句如果你不希望/你需要使用一個交易,你可以創建一個存儲過程,首先更新的觀看次數,然後選擇這些值並將它們返回給用戶。

2

你將不得不在一個事務中

Begin Tran 

Update Pages Set Views = Views + 1 Where ID = @ID 
Select Columns From Pages Where ID = @ID 

Commit Tran 
0

PostgreSQL的UPDATE語句的RETURNING子句將返回設置像一個SELECT語句的結果:

UPDATE mytable 
SET views = 5 
WHERE id = 16 
RETURNING id, views, othercolumn; 

我敢肯定這是不是標準,但。我不知道其他數據庫是否實現它。

編輯:我只是注意到你的問題有「MySQL」標記。也許你應該在問題中提到它。儘管這是一個很好的通用數據庫問題 - 我想看看如何在其他數據庫中執行此操作。

1

如果你列出你正在使用 SQL Server中的RDBMS這將有助於有OUTPUT語句

USE AdventureWorks; 
GO 
DECLARE @MyTestVar table (
    OldScrapReasonID int NOT NULL, 
    NewScrapReasonID int NOT NULL, 
    WorkOrderID int NOT NULL, 
    ProductID int NOT NULL, 
    ProductName nvarchar(50)NOT NULL); 

UPDATE Production.WorkOrder 
SET ScrapReasonID = 4 
OUTPUT DELETED.ScrapReasonID, 
     INSERTED.ScrapReasonID, 
     INSERTED.WorkOrderID, 
     INSERTED.ProductID, 
     p.Name 
    INTO @MyTestVar 
FROM Production.WorkOrder AS wo 
    INNER JOIN Production.Product AS p 
    ON wo.ProductID = p.ProductID 
    AND wo.ScrapReasonID= 16 
    AND p.ProductID = 733; 
SELECT OldScrapReasonID, NewScrapReasonID, WorkOrderID, 
    ProductID, ProductName 
FROM @MyTestVar; 
GO 
0

我用這一招Java和SQL Server還可以讓你送兩條命令在一個PreparedStatement中。

update tablex set y=z where a=b \r\n select a,b,y,z from tablex 

這將需要在讀提交的事務中工作,就像你認爲它應該。

相關問題