2008-09-04 19 views

答えて

2

をこれをしなければならないでしょうその値をユーザーに返します。

2

あなたは/トランザクションを使用する必要がしたくない場合は、あなたが最初のビュー数を更新し、選択し、ストアドプロシージャを作成することができます1つのトランザクションで二つの文で

Begin Tran 

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

Commit Tran 
0

PostgreSQLのUPDATE文は、SELECT文のような結果セットを返しますRETURNING句を持っています

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

私は、これはしかし、標準ではないかなり確信しています。他のデータベースがそれを実装しているかどうかはわかりません。

編集:あなたの質問に「MySQL」タグがあることに気がつきました。たぶんあなたは質問そのものに言及すべきです。それは良い一般的なデータベースの質問です - 私は他のデータベースでそれを行う方法を見たいと思います。

1

それはあなたがRDBMSを記載されている場合は、 SQL Serverを使用している役立つだろうが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でこのトリックを使用また、あなたが2つのコマンドを送信できるようになります単一のPreparedStatementに

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

これは、読者が思うように動作するためには、コミットされたトランザクションである必要があります。

関連する問題