Обновить таблицу MySQL из представления с псевдонимами

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

0
задан MazeyMazey 11 April 2019 в 09:33
поделиться

1 ответ

Я не знаю, решит ли это проблему, но я думаю, что вы можете упростить ваш View примерно так (менее бесполезное выражение select):

SELECT e.entity_id AS id,
   v1.value AS name,
   e.sku as sku,
   d1.value AS version
FROM mguu_catalog_product_entity e
LEFT JOIN mguu_catalog_product_entity_varchar v1 ON (e.entity_id = v1.entity_id)
LEFT JOIN mguu_catalog_product_entity_varchar d1 ON (e.entity_id = d1.entity_id)
LEFT JOIN mguu_eav_attribute AS mea ON (v1.attribute_id = mea.attribute_id)
LEFT JOIN mguu_eav_entity_type AS meet ON (meet.entity_type_code = 'catalog_product')
WHERE v1.store_id = 0
AND mea.attribute_code = 'name'
AND mea.entity_type_id = meet.entity_type_id
AND d1.attribute_id = 171;

В документации MySql:

ОБНОВЛЕНИЕ: таблица или таблицы, которые должны быть обновлены в операторе UPDATE, могут быть ссылками просмотра, которые объединены. Если представление является представлением объединения, по крайней мере один компонент представления должен быть обновляемым (это отличается от INSERT).

В операторе UPDATE для нескольких таблиц обновленные ссылки на таблицы в операторе должны быть базовыми таблицами или обновляемыми ссылками на представления. Необновленные ссылки на таблицы могут быть материализованными представлениями или производными таблицами.

https://dev.mysql.com/doc/refman/8.0/en/view-updatability.html

0
ответ дан Shim-Sao 11 April 2019 в 09:33
поделиться
Другие вопросы по тегам:

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