如何在选择之前更新列?

时间:2019-07-11 08:28:49

标签: sql sql-server

我正在为select设置存储过程,并且想要在执行Select之前更新数据库中一列的值。

这是我尝试过的方法,但是不起作用。

@roleID int@query varchar(240)

SELECT 
    EP.Equipe_Projet_Id AS PROJET_ID,
    U.USR_ID, 
    CleRepartition = CASE
                        WHEN @RoleID = 1 AND @query IS NOT NULL 
                           THEN 100  
                                AND (UPDATE EQUIPE_PROJET SET CleRepartition = 100 
                                     WHERE EP.Equipe_Projet_Id = @PROJET_ID AND EP.Role_Id = 3)
                           ELSE NULL      
                      END   
FROM 
    [EQUIPE_PROJET] EP

期待数据库中列的更新并具有其价值

2 个答案:

答案 0 :(得分:1)

  

我想在选择时更新数据库中列CleRepartition的值。

这在SELECT查询中是不可能的。 SELECT从数据库中检索数据。 UPDATE修改数据。这是两个单独的语句,不能合并。

您正在通过存储过程进行这项工作。在存储过程中,您可以按任何顺序运行UPDATESELECT,因此您可以完成两项任务。如果您担心两个语句之间的数据库中的数据更改,可以将它们包装在事务中。

答案 1 :(得分:0)

存储过程可以进行更新,然后选择。

因此,我在开始时添加了更新查询,然后进行选择。

赞:

UPDATE EP 
SET CleRepartition = CASE
                        WHEN @RoleID = 1 AND @query IS NOT NULL 
                           THEN 100  
                           AND (UPDATE EQUIPE_PROJET 
                                SET CleRepartition = 100 
                                WHERE EP.Equipe_Projet_Id = @PROJET_ID 
                                  AND EP.Role_Id = 3)
                           ELSE NULL      
                     END    
FROM [EQUIPE_PROJET] EP

SELECT 
    EP.Equipe_Projet_Id AS PROJET_ID,
    U.USR_ID, 
    CleRepartition  
FROM 
    [EQUIPE_PROJET] EP

我希望这会对某人有所帮助。