Есть ли в MySQL параметр Dynami c, чтобы неявно ограничивать все запросы во всех таблицах только записями с YearID, установленным на этот год? - PullRequest
1 голос
/ 01 мая 2020

Я использую PHP для доступа к базе данных MySql с ~ 50 таблицами. Почти в каждой таблице есть поле для YearID. Мое приложение скоро начнется второй год, и я буду просто добавлять записи в таблицы с новым YearID. В настоящее время мои запросы не включают YearID в качестве ограничения, потому что хранятся данные только за один год (и я не думал о том, чтобы забегать вперед!).

Я хочу, чтобы пользователи имели доступ к предыдущим годам ' данные. Очевидно, что один из способов сделать это состоит в том, чтобы обновить все мои запросы по всему сайту, чтобы включить YearID.

Прежде чем я это сделал, мне было интересно, есть ли какая-либо динамическая настройка c в MySql, которая будет неявно ограничивать все запросы ко всем таблицам только записями с определенным YearID.

Например, один запрос теперь выглядит следующим образом:

SELECT distinct RubricPK, tas.DisplayOrder, s.IDENTIFIER
    FROM Rubric r
    JOIN TeacherAssessedStandards2 tas ON tas.STANDARDID=r.EL_StandardID AND tas.SLorEL="EL" AND 
     tas.SectionDCID = ?
    JOIN Standards s ON s.StandardID = tas.ParentStandardID
    ORDER BY tas.DisplayOrder, s.IDENTIFIER

В этот запрос не включен YearID.

Есть ли настройка MySQL, которую я могу изменить с PHP, так что запрос выше будет извлекать только из записей в каждой таблице, где YearID = 2020?

Или я должен приступить к работе, редактируя все мои запросы, чтобы включить ограничение YearID?

1 Ответ

0 голосов
/ 01 мая 2020

Нет способа достичь этого напрямую через настройку. Что вы можете сделать, это написать несколько строк $ scripting_language, чтобы найти все таблицы с помощью information_schema и создать VIEW на основе каждой из них в отдельной базе данных. Например:

CREATE VIEW DB2020.table_name AS SELECT * FROM MainDB.table_name WHERE YearID = '2020';

Затем предоставьте своим пользователям SELECT доступ только к базе данных DB2020.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...