Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
iap, авторСервером? это в смысле column permission? так для него и делать ничего не надо авторINSTEAD OF UPDATE ну да, возможно + INSERT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:38 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
До гемороя додумался потому что надо перенести логику с клиента на сервер. Сейчас на клиенте анализируется старое значение и новое значение отдельных полей и если выполнены определённые правила, то выполняется апдейт. Задолбался я клиент переписывать и всё время добавлять/изменять эти правила для каждого поля. Вот и возникла идея оставить клиенту функцию сугубо сбора данных и пересылки их на сервер, а всем остальным должен заниматься сервер. Самый важный плюс: изменение логики на сервере без переписывания и переустановки клиента. Плюс ко всему давно назрела необходимость логировать изменения и как-то в удобной форме показывать их пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:39 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukTaPaKну, имхо, можно получать изменённые колонки, если прав на них нет - орать, если достаточно, то апдейт всей линии без извращений Получить изменённые колонки, на котрых нет прав - это по сути и есть решение задачи. В том то й вопрос, как получить только изменённые колонки ? Ну а дальше уже можна накладывать разные условия: есть ли на них права, бизнес-логика и всё что угодно Как говорилось выше, проверять надо до update. И посылать update только тех полей, которые разрешены данному пользователю. Даже не пойму, зачем сообщения "Вам нельзя менять это поле". Клиент тоже должен быть удобным. Я б отдал это на клиента, и просто, на клиенте не давал менять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:42 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
asdorЯ б отдал это на клиента, и просто, на клиенте не давал менять. Так сейчас и есть, но переписывать клиент и переустанавливать на сотнях ПК раз в неделю или две недели - напряжно и уже достало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:46 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukasdorЯ б отдал это на клиента, и просто, на клиенте не давал менять. Так сейчас и есть, но переписывать клиент и переустанавливать на сотнях ПК раз в неделю или две недели - напряжно и уже достало. а клиент о новых колонках и что с ними делать как узнаёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:48 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukasdorЯ б отдал это на клиента, и просто, на клиенте не давал менять. Так сейчас и есть, но переписывать клиент и переустанавливать на сотнях ПК раз в неделю или две недели - напряжно и уже достало.Что мешает на клиенте формировать запрос на основе данных из системных таблиц относительно прав доступа к полям таблицы? А на сервере можно апдейтить только записи, в которых что-то изменилось, например, в триггере INSTEAD OF UPDATE. Переписывать клиента в этом случае не придётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:52 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
iapShovgenyukпропущено... Так сейчас и есть, но переписывать клиент и переустанавливать на сотнях ПК раз в неделю или две недели - напряжно и уже достало.Что мешает на клиенте формировать запрос на основе данных из системных таблиц относительно прав доступа к полям таблицы? А на сервере можно апдейтить только записи, в которых что-то изменилось, например, в триггере INSTEAD OF UPDATE. Переписывать клиента в этом случае не придётся. тогда надо и не давать редактировать, а то получится он стучит а ничего не меняется, вдеь в запрос уходит только то что можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:57 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
iapЧто мешает на клиенте формировать запрос на основе данных из системных таблиц относительно прав доступа к полям таблицы? А на сервере можно апдейтить только записи, в которых что-то изменилось, например, в триггере INSTEAD OF UPDATE. Переписывать клиента в этом случае не придётся. Вопрос не только в правах доступа. Основное - это бизнес логика. тригеры не используються. Апдейт происходит в SP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:03 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
TaPaKiapпропущено... Что мешает на клиенте формировать запрос на основе данных из системных таблиц относительно прав доступа к полям таблицы? А на сервере можно апдейтить только записи, в которых что-то изменилось, например, в триггере INSTEAD OF UPDATE. Переписывать клиента в этом случае не придётся. тогда надо и не давать редактировать, а то получится он стучит а ничего не меняется, вдеь в запрос уходит только то что можноЕсли оно в таблице уже и так такое, как надо, то не всё ли равно, меняем или нет?! И зачем знать, изменялось или нет? Я бы сказал, клиент должен не "не давать редактировать", а вообще не показывать поля, к которым нет доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:03 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukiapЧто мешает на клиенте формировать запрос на основе данных из системных таблиц относительно прав доступа к полям таблицы? А на сервере можно апдейтить только записи, в которых что-то изменилось, например, в триггере INSTEAD OF UPDATE. Переписывать клиента в этом случае не придётся. Вопрос не только в правах доступа. Основное - это бизнес логика. тригеры не используються. Апдейт происходит в SPТриггер - это тоже процедура. Но гарантированно вызывающаяся по совершенно определённому событию. В отличие от SP, которую можно вызвать, а можно и не вызывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:05 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
iap, авторсли оно в таблице уже и так такое, как надо, то не всё ли равно, меняем или нет?! как пользователь поймёт, что ему нельзя этого делать, если ему всё даёт, а данные не меняет, а сосед меняет без проблем, выставляют инцидент и тд авторЯ бы сказал, клиент должен не "не давать редактировать", а вообще не показывать поля, к которым нет доступа. или так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:06 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовShovgenyuk, бред бредович, а не "идея". Вы всерьез верите, что сервер каждое поле обновляет отдельной операцией? Уменьшите слегка нагрузку на журнал, не более того. Вы хотите сказать, что для сервера: Update T1 SET Field1=10, Field2=20, Field3=30 .... FieldN=1000 WHERE FieldKey=1 одно и тоже, что Update T1 SET Field1=10 WHERE FieldKey=1 Update T1 SET Field2=20 WHERE FieldKey=1 Update T1 SET Field3=30 WHERE FieldKey=1 ... Update T1 SET FieldN=1000 WHERE FieldKey=1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:07 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukasdorЯ б отдал это на клиента, и просто, на клиенте не давал менять. Так сейчас и есть, но переписывать клиент и переустанавливать на сотнях ПК раз в неделю или две недели - напряжно и уже достало. Ну а зачем? Сделайте что бы клиент знал о доступных для редактирования полях, и запретите редактирование других. Менять это можно и на сервере. Главное клиенту знать. Не надо будет никаких перекомпиляций. Вам просто немного надо над НОВОЙ архитектурой подумать. И... странно, вы что в ручную бегаете по 200 компам? Надо бы систему, которая автоматом обновляет))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:08 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukВладислав КолосовShovgenyuk, бред бредович, а не "идея". Вы всерьез верите, что сервер каждое поле обновляет отдельной операцией? Уменьшите слегка нагрузку на журнал, не более того. Вы хотите сказать, что для сервера: Update T1 SET Field1=10, Field2=20, Field3=30 .... FieldN=1000 WHERE FieldKey=1 одно и тоже, что Update T1 SET Field1=10 WHERE FieldKey=1 Update T1 SET Field2=20 WHERE FieldKey=1 Update T1 SET Field3=30 WHERE FieldKey=1 ... Update T1 SET FieldN=1000 WHERE FieldKey=1 ? Конечно же нет))) В первом случае 1 запрос, во втором N запросов))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:10 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
вообще хоть показывай, хоть не показывай, надо проверять на сервере, а не на клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:12 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
TaPaKвообще хоть показывай, хоть не показывай, надо проверять на сервере, а не на клиенте Ну да. Значит сохранять через ХП, в которой в зависимости от прав вызвавшего, IF-ами все проверять. Но и клиенту должно быть комфортно)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:16 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
ShovgenyukДо гемороя додумался потому что надо перенести логику с клиента на сервер. Сейчас на клиенте анализируется старое значение и новое значение отдельных полей и если выполнены определённые правила, то выполняется апдейт. Задолбался я клиент переписывать и всё время добавлять/изменять эти правила для каждого поля. Вот и возникла идея оставить клиенту функцию сугубо сбора данных и пересылки их на сервер, а всем остальным должен заниматься сервер. Самый важный плюс: изменение логики на сервере без переписывания и переустановки клиента. Плюс ко всему давно назрела необходимость логировать изменения и как-то в удобной форме показывать их пользователю. таки я был прав! )) но вам не приходило в голову что при переносе логики с клиента на сервер , надо заодно и алгоритмы работами с данными менять? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:29 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
Клиенту нельзя не показывать поля, потому что у него есть права их читать. Динамически блокировать изменение полей на клиенте к которым нету доступа - не проблема. О новых полях клиент не знает. Речь идёт пока что только о существующих полях. Хотя планируется и динамическое формирование форм для ввода на клиенте. Это тоже не проблемма. Есть метаданные и можна сформировать на формах ввода в клиенте динамические элементы и динамически асоциировать из из полями таблиц. Опишу саму идея подробнее. Клиент занимаеться только сбором данных и пересылкой их на сервер. Сервер получает данные из клиента и записівает их во временную таблицу с неким GUID, анализирует права доступа и бизнес-логику. При необходимости формирует специальную "анкету" для клиента которая представляет собой ХML-документ из упомянутым GUID, предупреждениями, уточняющими вопросами, сообщениями для клиента. Клиент отображает ХML-анкету и отвечает на вопросы типа "вы уверены, что надо изменить номер документа" да/нет; "вы подтверждаете и берете на себя ответственность что в данном документе есть пометка - срочно выполнить!" да,подтверждаю/нет; "уточните кто дал разрешение исполнить это без очереди..." ФИО... и т.д. Или же ХML-анкета содержит сообщения о недопустимости апдейта по причинам отсутсвия доступа или чего-то другого... Клиент заполняе анкету и отправляет на сервер. Сервер ищет по упомянутому GUID первоначальные данные во временной таблице и сопоставляет их из ответами в енкете, анализирует и апдейтит или не апдейтит о чём отдаёт ответ клиенту. Плюс должна быть удобная история всех изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:30 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
asdorShovgenyukпропущено... Вы хотите сказать, что для сервера: Update T1 SET Field1=10, Field2=20, Field3=30 .... FieldN=1000 WHERE FieldKey=1 одно и тоже, что Update T1 SET Field1=10 WHERE FieldKey=1 Update T1 SET Field2=20 WHERE FieldKey=1 Update T1 SET Field3=30 WHERE FieldKey=1 ... Update T1 SET FieldN=1000 WHERE FieldKey=1 ? Конечно же нет))) В первом случае 1 запрос, во втором N запросов))) Ну так я как раз и пытаюсь сделать так что бы был один запрос-первый случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:31 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
Shovgenyuk, судя по задаче, Вам нужно повернуть поля анкеты вертикально, превратить в пары "ключ-значение". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 15:04 |
|
||
|
Подскажите оптимальное решение Update выборочных Field таблицы
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовShovgenyuk, судя по задаче, Вам нужно повернуть поля анкеты вертикально, превратить в пары "ключ-значение". Да, нужно, но не все поля. Кроме того мне нужно повернуть вертикально поля для истории изменений что бы потом показать клиенту кто, что и когда изменил в документе. Должна получится таблица в первой колонке которой перечень полей (атрибутов) , а во всех остальных колонках значения этих атрибутов. Количество остальных колонок должно быть равно количеству изменений (Update'ов). При этом в таблице (в первой колонке) должны быть только те поля, которые когда либо изменялись (не все). Поскольку мне всё равно придётся вычислять перечень этих полей, которые когда либо изменялись, то почему бы не сделать это на этапе Update, при этом пусть даже и немного, но облегчить нагрузку на сервер (у Update будет меньше полей) ну и основное - очень существенно уменьшить расход дискового пространства на сохранение истории, так как в истории будут сохранятся только те поля которые изменялись, а не каждый раз все поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1690012]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
5ms |
get first new msg: |
5ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 294ms |

| 0 / 0 |
