2012-05-18 3 views
2

В MySQL у меня есть одна база данных с одной схемой. В Microsoft Sql Server рекомендуется использовать «Фильтр представления тендеров», поэтому в Microsoft Sql Server это дает мне именно то, что мне нужно.Каков наилучший способ фильтрации базы данных MySQL с несколькими арендаторами?

CREATE VIEW TenantEmployees AS 
SELECT * FROM Employees WHERE TenantID = SUSER_SID() 

Каков наилучший способ сделать то же самое в MySQL? Эквивалент «Фильтру видимости арендатора» будет работать, если он работает хорошо.

Спасибо!

+1

Возможно, ['CURRENT_USER'] (http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_current-user) и' USER() 'функции могут вам помочь. –

ответ

2

Запрос, который вы предлагаете (что я мог найти в MSDN), содержит текст, который объясняет, каковы его предположения. В частности, в нем упоминается, что он предполагает, что «владелец» строки в таблице Employees указан в поле TenantID, которое заполняется в соответствии с SID пользователя (ов), для которого вы разбиваете.

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

В частности, если настроить систему таким образом, что каждый раздел получает доступ к БД со своими учетными данными, вы можете использовать CURRENT_USER или USER конструктов MySQL в качестве идентификаторов определения разделов и запроса, чтобы создать представление будет в основном аналогично предложению в MSDN, заменяющему SUSER_IDCURRENT_USER.

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

0

Поскольку для выполнения фильтрации используется значение tenantId, функция, определяемая таблицей, будет идеальной, так как представление обычно не принимает параметры. К сожалению, в отличие от многих других продуктов баз данных MySQL doesn't support table-valued functions. Однако существуют MySQL hacks that claim to emulate parametrized views. Они могут быть полезны для вас.

Смежные вопросы