@Quotro
'Фанат'*'перфекционист'

Как это так? Команда Update сделала Truncate таблицы?

20 запросов Update, захотелось их оптимизировать. Для слияния этих 20 запросов в один была использована конструкция WHEN - THEN. Поздно, усталость, ошибка.
В результате запроса исчезли все значения в таблице brand_sku_increment!
Да, все восстановили, но не могу понять, как так могло произойти. Когда есть ошибка в синтаксисе, выводится предупреждение об ошибке и команда просто не выполняется.

UPDATE brand_sku_increment SET `sku_brand`= CASE
WHEN product_sku = 'G-60019 THEN '00006-1'
WHEN product_sku = 'G-40015' THEN '00001-1'
......

END 
WHERE 1


Помогите понять, что вызвало truncate.
product_sku и brand_sku - primary key
Их вообще нельзя менять изнутри таблицы?
  • Вопрос задан
  • 163 просмотра
Решения вопроса 2
@MoonMaster
Программист и этим все сказано
Меня больше настараживает именно этот CASE WHEN. Ведь у вас есть только THEN, а ELSE нету. По идее если ELSE опущено, то нужно вставлять NULL значение. А также настараживает условие WHERE 1
Ответ написан
Комментировать
@bioroot
Во-первых, у вас после G-60019 кавычка не закрыта. Во-вторых, надо смотреть, что у вас за записи в базе. Но никто не запрещает заменить UPDATE на SELECT и самому увидеть какую выборку сделает запрос:
SELECT CASE WHEN product_sku = 'G-60019' ... END AS test_field  FROM brand_sku_increment;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы