SQL Оператор обновления не обновляется, ошибок при выполнении нет - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть следующие два оператора обновления, запланированные ежедневно для обновления столбца (x_shippit_volumetric_weight), в зависимости от того, что больше - net weight или volumetri c weight. У меня есть операторы AND, чтобы остановить перезапись любых существующих данных, если они уже присутствуют и исправить.

Проблема в том, что данные не обновляются, даже если x_shippit_volumetric_weight = 0 ? Также не отображаются ошибки при выполнении этих двух операторов обновления.

Любая помощь по поводу того, почему он не обновляет данные, будет принята с благодарностью.

UPDATE stock_items 
SET    x_shippit_volumetric_weight = Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) 
WHERE Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) > stock_items.weight
AND x_shippit_volumetric_weight <> Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) 
AND (stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm) <> 0; 


UPDATE stock_items 
SET    stock_items.x_shippit_volumetric_weight = Round(( stock_items.weight ), 4) 
WHERE  stock_items.weight > Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) 
AND stock_items.x_shippit_volumetric_weight <> Round(( stock_items.weight ), 4); 

1 Ответ

0 голосов
/ 23 апреля 2020

Хорошо. Я обнаружил причину отсутствия обновления данных (в некоторых случаях). Везде, где x_shippit_volumetric_weight имеет значение NULL, оно не обновлялось. На самом деле я не понимаю, почему, однако добавление следующих операторов UPDATE до того, как два других оператора UPDATE облегчит проблему.

UPDATE stock_items 
SET    x_shippit_volumetric_weight = 0 
WHERE  x_shippit_volumetric_weight IS NULL;
...