Оператор Update Switch влияет на всю таблицу - PullRequest
0 голосов
/ 28 февраля 2019

MS Access SQL.Я делаю оператор SQL Update, используя SWITCH.

Update Insurance Set [SellPrice]=SWITCH 
([Cover]=50, 4.2, 
[Cover]=100, 5.4, 
[Cover]=200, 6.8)

3 поля в операторах обновлены правильно, но он закрывает столбец SellPrice для всех других записей.Оператор обновляет все строки, а не только те 3, которые я идентифицировал.

1 Ответ

0 голосов
/ 28 февраля 2019

Это обычное поведение.Ваш запрос на обновление всегда влияет на все строки, и оператор switch возвращает Null, если не выполняется ни одно из условий.

Вам следует отфильтровать строки, на которые вы хотите повлиять:

Update Insurance Set [SellPrice]=SWITCH 
([Cover]=50, 4.2, 
[Cover]=100, 5.4, 
[Cover]=200, 6.8)
WHERE Cover IN (50,100,200)

В качестве альтернативы,вы можете заставить оператор SWITCH возвращать текущее значение, если не выполняется ни одно из условий:

Update Insurance Set [SellPrice]=SWITCH 
([Cover]=50, 4.2, 
[Cover]=100, 5.4, 
[Cover]=200, 6.8,
True, SellPrice)

Однако это, вероятно, будет иметь худшую производительность и приведет к большему количеству блокировок.

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