2015-01-13 4 views
0

У меня есть таблица SQL-сервера, в которой есть два столбца, которые я хочу обновить либо их значения в соответствии с флагом, отправленным в хранимую процедуру, так и новым значением, например:запрос: если условие в обновлении сервера sql

UPDATE 
    table_Name 

SET 
    CASE 
     WHEN @flag = '1' THEN column_A += @new_value 
     WHEN @flag = '0' THEN column_B += @new_value 
    END AS Total 

WHERE 
    ID = @ID 

Каков правильный код сервера SQL для этого?

+1

Вы лучше делать это в два отдельных обновлениях, но с одной сделки, в противном случае делает это в одном операторе приведет в заявлениях о случаях и некоторых ненужных обновлениях. –

+0

@ M.Ali Спасибо за ваш ответ! Можете ли вы привести пример того, что вы подразумеваете под одной транзакцией? –

ответ

0

Я думал, что комментарий М.Али был прав, поэтому я построил это на основе его предложения. Я также предполагаю, что поле статуса «одобрено» или «отклонено», как вы говорите, на основании того, заполнено или нет. Если есть какие-либо другие условия на поле статуса, Offcourse вы должны добавить их к вам, где заявление

BEGIN TRANSACTION 

Update Payment 
set post_date = new_postdate_value 
account_num = new_account_num_value 
pay_am = new_pay_am_value 
pay_type = new_pay_type_value 
authoriz = new_authoriz_value 
where status is not null 

UPDATE Payment 
SET account_num = new_account_num_value 
WHERE status is null 

COMMIT TRANSACTION 
Смежные вопросы