Как я могу найти, где используется функция Mysql?

Я использую Mysql 8. В одном из представлений, над которыми я работаю, используется функция calculateGP. Я хочу изменить эту функцию, но не уверен, используется ли эта функция где-нибудь в базе данных. Есть ли запрос, который я могу выполнить, чтобы узнать, где еще в базе данных есть ссылка на функцию?

Зачем тебе это нужно знать?

Tim Biegeleisen 27.08.2018 04:14

В итоге я взял структурный дамп mysql и стал искать имя функции в сценарии, чтобы найти вхождения.

Kasun 27.08.2018 04:16

@TimBiegeleisen Изменение функции может привести к тому, что другие представления, которые могут использовать ту же функцию, сломают / изменят свой результат. Не хочу вызывать непреднамеренные результаты в этих просмотрах

Kasun 27.08.2018 04:18

@Kasun. Вы можете добавить это как ответ на свой вопрос, и через несколько дней вам будет разрешено принять его как принятый ответ. Таким образом, вопрос не попадет в списки неотвеченных вопросов :)

Richardissimo 27.08.2018 07:57

Сделаю. Однако это альтернативный метод, а не прямое решение вопроса. Я сохраню этот метод как принятый ответ, пока кто-нибудь не предоставит лучший вариант. :)

Kasun 28.08.2018 01:20
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
5
415
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Мне удалось найти ссылки на функцию calculateGP, взяв структурный дамп MySQL базы данных и выполнив текстовый поиск в файле дампа. Это альтернативный метод поиска ссылок в базе данных без выполнения запроса MySQL.

Ответ принят как подходящий

Я бы сделал это:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE VIEW_DEFINITION LIKE '%`calculateGP`%'

Это может привести к обнаружению ложных совпадений, если у вас есть таблицы, столбцы или другие идентификаторы, которые также имеют имя calculateGP.

Хорошо, это дает имена представлений, которые используют эту функцию. Просто убедитесь, что вы запускаете запрос с достаточными привилегиями, чтобы увидеть все определения представлений в таблице information_schema.VIEWS. Также можно увидеть, используют ли какие-либо триггеры функцию, выполнив тот же запрос в столбце ACTION_STATEMENT в таблице information_schema.TRIGGERS.

Kasun 28.08.2018 03:41

чтобы проверить, используется ли он в другой функции или процедуре, можно использовать столбец ROUTINE_DEFINITION в столбце information_schema.ROUTINES

Kasun 28.08.2018 03:44

Другие вопросы по теме