Вопрос

Я собираюсь написать CREATE FUNCTION с MySQL и мне интересно, если CREATE TEMPORARY TABLE засчитывается в счет флага MODIFIES SQL DATA.Функция не изменяет никакую постоянную таблицу, просто временная таблица, которую он создает в целях оптимизации.Должен ли я использовать флаг MODIFIES SQL DATA или только READS SQL DATA?Что такое на самом деле выгода использовать MODIFIES SQL DATA или READS SQL DATA флаг все-таки?

Это было полезно?

Решение

На данный момент (MySQL 5.5) эти характеристики служат только документацией в коде.

От http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html

Несколько характеристик предоставляют информацию о характере использования данных рутиной.В MySQL эти характеристики носят только рекомендательный характер.Сервер не использует их для ограничения того, какие виды операторов будут разрешены выполнять процедуру.

Это в отличие от (NON)DETERMINISTIC предложение, которое служит подсказкой оптимизатору, можно ли кэшировать результаты функции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top