Как обновить столбец перед выбором? - PullRequest
0 голосов
/ 11 июля 2019

Я устанавливаю хранимую процедуру для выбора и хочу обновить значение одного столбца в базе данных Перед выполнением выбора.

Это то, что я пробовал, но оно не работает.

@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 ]

1 голос
/ 11 июля 2019

Я хочу обновить значение столбца CleRepartition в базе данных при выборе.

Это невозможно в запросе SELECT. A SELECT извлекает данные из базы данных. UPDATE изменяет данные. Это два отдельных утверждения, которые нельзя объединять.

Вы выполняете эту работу в хранимой процедуре. Внутри хранимой процедуры вы можете запускать UPDATE и SELECT в любом порядке, чтобы вы могли выполнять обе задачи. Если вас беспокоит изменение данных в базе данных между двумя операторами, вы можете заключить их в транзакцию.

0 голосов
/ 15 июля 2019

Хранимая процедура может выполнить обновление, затем выбрать после.

Итак, я добавил запрос на обновление в начале, затем я делаю выбор.

Вот так:

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

Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...