Здравствуйте, MHammer, Вы писали:
MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
К конкретному селекту или ко весм селектам к данной таблице?
Здравствуйте, bizhan, Вы писали:
B>Здравствуйте, MHammer, Вы писали:
MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
B>К конкретному селекту или ко весм селектам к данной таблице?
Это в принципе не имеет значения-если можно один словить,значит остальные-дело техники.
B>А зачем? Может быть тебе другое надо?
Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.
Hello MHammer! On 4/20/03 11:29 AM you wrote:
> MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему > WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет. > B>К конкретному селекту или ко весм селектам к данной таблице? > Это в принципе не имеет значения-если можно один словить,значит > остальные-дело техники. > B>А зачем? Может быть тебе другое надо? > Нужно чтобы от вызывающей программы при определенных обстоятельствах > скрывать часть данных,как будто их нет вообще, потому как програма > написана и доступа к ее исходникам нет.
а вьюшки не подходят для этой цели?
--
Best Regards,
Anton
Здравствуйте, MHammer, Вы писали:
B>А зачем? Может быть тебе другое надо? MH>Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.
А как ты по селекту узнаешь, что это именно тот селект, который делает программа?
Я потому и спросил — конкретный или все.
В Оракле я могу задать политику для доступа к таблице.
И, например, для конкретного пользователя показывать только четные строки.
Но это будет действовать на все его селекты.То есть, это к безопастности.
Здравствуйте, bizhan, Вы писали:
B>Здравствуйте, MHammer, Вы писали:
B>А как ты по селекту узнаешь, что это именно тот селект, который делает программа? B>Я потому и спросил — конкретный или все.
Конкретный.
B>В Оракле я могу задать политику для доступа к таблице. B>И, например, для конкретного пользователя показывать только четные строки. B>Но это будет действовать на все его селекты.То есть, это к безопастности.
B>Есть ли аналог в MS SQL — надо посмотреть.
ИМХО нет.
Здравствуйте, MHammer, Вы писали:
MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
Переименуй таблицу, сделай view с исходным именем таблицы и задай там where.
... << RSDN@Home 1.0 beta 6a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, MHammer, Вы писали:
MH>>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
B>>К конкретному селекту или ко весм селектам к данной таблице? MH>Это в принципе не имеет значения-если можно один словить,значит остальные-дело техники.
MH>Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.
Перехватывать селект скорее всего не получится. Предлгаю другой вариант.
1. Переименовать исходную таблицу.
2. Добавить в нее еще один столбец, в котором будет флаг доступа к данной записи (можно или нет ее читать).
3. Создаем вьюшку с опцией WITH VIEW_METADATA. Это позволит делать INSERT и UPDATE с этой вьюшкой.
4. В самой вьюшке прописываем это самое WHERE-условие по свежедобавленному флагу доступа.
Таким образом и доступ можно регулировать "на ходу": изменил флажок у записи и "вуаля" — доступ закрыт/открыт.
В данном случая WITH VIEW_METADATA — одно из главных условий. На такие вьюшки можно даже
триггера писать (INSTEAD triggers)
Здравствуйте, EqWu, Вы писали:
EW>Здравствуйте, MHammer, Вы писали:
MH>>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
B>>К конкретному селекту или ко весм селектам к данной таблице? MH>Это в принципе не имеет значения-если можно один словить,значит остальные-дело техники.
MH>Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.
EW>Перехватывать селект скорее всего не получится. Предлгаю другой вариант. EW>1. Переименовать исходную таблицу. EW>2. Добавить в нее еще один столбец, в котором будет флаг доступа к данной записи (можно или нет ее читать). EW>3. Создаем вьюшку с опцией WITH VIEW_METADATA. Это позволит делать INSERT и UPDATE с этой вьюшкой. EW>4. В самой вьюшке прописываем это самое WHERE-условие по свежедобавленному флагу доступа. EW>Таким образом и доступ можно регулировать "на ходу": изменил флажок у записи и "вуаля" — доступ закрыт/открыт.
ВАЖНОЕ ДОБАВЛЕНИЕ!!!
Во WHERE-условии лучше применить user-defined functions (типа WHERE accFlag = dbo.isAccessible()),
чтобы в этой функции (возможно опосредованно через хранимую процедуру) проверять что за юзер
проводит запрос. Ведь прогу то, от которой хочется данные скрывать, ты по имени юзера идентифицируешь? !!!!!!!!!!!!!!!!!!!!
EW>В данном случая WITH VIEW_METADATA — одно из главных условий. На такие вьюшки можно даже EW>триггера писать (INSTEAD triggers)
EW>Отпишись, если получится...