【问题标题】:How to Update a column Before Select?如何在选择之前更新列?
【发布时间】:2019-07-16 02:41:19
【问题描述】:

我正在为 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

期望更新数据库上的列并具有它的价值

【问题讨论】:

  • 有什么问题?你有错误吗? but it's not working 是什么意思?
  • 上面没有UPDATE子句?要更新列的值,您需要使用UPDATE
  • 更新中出现错误的问题。我认为语法不正确。
  • SELECT CleRepartition= .. 不会更新任何内容。这是别名SELECT .. AS CleRepartition 的另一种语法。
  • “导致我在更新过程中出错的问题” 很好,但是错误是什么?我们看不到您看到的内容,也无法运行您的 SQL。引导盲人时,需要给他们明确的指示,而不是模糊的细节。

标签: sql sql-server


【解决方案1】:

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

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

您正在存储过程中执行此工作。在存储过程中,您可以按任意顺序运行UPDATESELECT,这样您就可以完成这两项任务。如果您担心两个语句之间数据库中的数据变化,可以将它们包装在事务中。

【讨论】:

    【解决方案2】:

    存储过程可以先更新然后再选择。

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

    像这样:

    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
    

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

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      相关资源
      最近更新 更多