powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос типа update , есть ли понятие типа optimistic?
6 сообщений из 6, страница 1 из 1
запрос типа update , есть ли понятие типа optimistic?
    #39200200
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем, столкнулся с небольшой задачкой при взаимодействии пользователей c базой mysql.
Обычная форма HTML + jquery + etc.. Админка - PhpMyAdmin
Защита вся на стороне сервера , права юзеров расписаны до уровня полей таблицы.

Три поля на форме к примеру - Vasya, Kolya, Petya . Ну и роли такие же, Вася, Коля,Петя
Каждый из этих пользователей имеет право обновлять только свое поле (права настроены на уровне сервера).

В запрос из формы WEB (в частности UPDATE) в PHP передается значение сразу трех полей и собирается запрос для отправки на MySQL server. Точнее из модальной формы редактирования JqGrid ( но это не суть как важно).
В общем от пользователя формируется запрос на обновление всех полей типа:

Код: plsql
1.
UPDATE Table1 SET Table1.Vasya = 12, Table1.Kolya = 8, Table1.Petya = 23



Если запрос поступил от Васи, то должно должно обновиться всего одно значение поля Vasya, которое примет значение равное 12ти
Несмотря на то, что в остальных полях тоже что то передается (это могут быть старые значения от остальных пользователей).

Решение у меня в общем то есть, но оно на стороне PHP пока только, и на стороне MySQL . Оба громоздкие в принципе.

Идея 1 - проверить циклом список полей с модальной формы. Проверить дополнительно возможность обновления данного поля , если оно true, то имя поля поступает/вклеивается в текст формирующегося запроса и на выдаче поступает на сервер mysql, если false то не участвует в формировании его. Все здорово, но это же сколько обращений к серверу будет на одну операцию обновление.

Идея 2 - Сделать то же самое , но на стороне сервера , при помощи триггера.

А так в целом , может там есть в настройках самого сервера mysql (в частности в интерефейсе phpMyAdmin), чтобы запрос на обновление выполнялся несмотря на ограничения,и обновлял поля, которые по роли он может обновлять, а остальные игнорировал. Что то типа по аналогии ВЫБРАТЬ РАЗРЕШЕННЫЕ (как в 1С)?
...
Рейтинг: 0 / 0
запрос типа update , есть ли понятие типа optimistic?
    #39200205
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

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

следаюший вариант -- пропускать запрос через какой-нибудь
"програмный модуль" чтоб вырезать ненужные поля.

С тригером есть некая проблема -- ему надо передать роль.
например в поле UPDATER_ROLE.... собствено тригер
будет работать как вышеупомянутый "програмный модуль".

На Оркле вроде такое можно настроить прозрачно
но в МуСКЛе -- продется писать логику.
...
Рейтинг: 0 / 0
запрос типа update , есть ли понятие типа optimistic?
    #39200214
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

Все права доступа хранятся на сервере mysql, наверное в mysql.users Создаются классическим способом , по методу запретить сначала все на уровне сервера, баз в нем, таблиц в них, полей в них. А потом на отдельные конкретные таблицы и поля в них в зависимости от групп пользователей отдельно даю доступ на select,insert,update ,delete. Кроме этих четырех действий по моему мнению им остальное не нужно. Скоро и к таблицам доступ уберу ,оставлю доступ к редактируемым вьюхам.

Я думал что есть на стороне mysql готовая функция , которая может проверить что то типа is_updatable на уровне таблиц полей и вернуть типа true или false на обработчик в PHP.

Посмотрю, покопаюсь. Идеи костылька на php есть. Может и в самих функциях сервера подобие найду.
...
Рейтинг: 0 / 0
запрос типа update , есть ли понятие типа optimistic?
    #39200233
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
запрос типа update , есть ли понятие типа optimistic?
    #39200315
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лаловможет там есть в настройках самого сервера mysql (в частности в интерефейсе phpMyAdmin), чтобы запрос на обновление выполнялся несмотря на ограничения
Отсутствие права на обновление поля при попытке его обновления приводит к ошибке.
Ошибка при выполнении запроса приводит к отказу от выполнения всего запроса, ибо запрос атомарен и неделим.
И то, и другое - это идеология. Так что никакими настройками проблему не решить.

Сергей Лаловот пользователя формируется запрос на обновление всех полей типа:
Измените формирование, чтобы формировались три запроса в одной строке:
Код: sql
1.
UPDATE Table1 SET Table1.Vasya = 12;UPDATE Table1 SET Table1.Kolya = 8;UPDATE Table1 SET Table1.Petya = 23;


Проследите, чтобы при отправке их серверу НЕ формировалась транзакция. Тогда из них выполнятся только те запросы, на выполнение которых есть право.
Ну и коннектор, само собой, должен допускать мультизапросы.
...
Рейтинг: 0 / 0
запрос типа update , есть ли понятие типа optimistic?
    #39200319
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтернативный вариант - перенос логики из запроса в ХП. Где можно спокойно проверить наличие прав и выполнить только те действия, которые разрешены.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос типа update , есть ли понятие типа optimistic?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]