2008-09-04 4 views

Répondre

2

Si vous ne voulez pas/avoir besoin d'utiliser une transaction, vous pouvez créer une procédure stockée première mise à jour du nombre de visionnages et sélectionne les valeurs et les renvoyer à l'utilisateur.

2

Vous auriez à faire dans deux déclarations dans une transaction

Begin Tran 

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

Commit Tran 
0

déclaration PostgreSQL de UPDATE a la clause RETURNING qui renverra un jeu de résultats comme une instruction SELECT:

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

Je suis sûr que ce n'est pas standard bien. Je ne sais pas si d'autres bases de données l'implémentent.

Editer: Je viens de remarquer que votre question a le tag "MySQL". Peut-être devriez-vous le mentionner dans la question même. C'est une bonne question de base de données générique - j'aimerais voir comment le faire dans d'autres bases de données.

1

Il serait utile si vous avez inscrit le SGBDR que vous utilisez SQL Server a l'instruction SORTIE

Exemple

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

J'ai utilisé cette astuce avec Java et SQL Server vous permettent également d'envoyer deux commandes dans un seul PreparedStatement.

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

Ceci devra être dans une transaction validée en lecture pour fonctionner comme vous le pensez.

Questions connexes