|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Здравствуйте! Возник один вопрос по использованию stored function в связке с view: Есть небольшая таблица счетов , где пользователь производит их занесение. (номер счета, дата, сумма_счета, сумма_списания) И есть (только что написал ) небольшая тестовая функция на mySql которая считает остаток сумма_счета-сумма_списания. Проблема заключается в том, что при редактировании данных во вьюхе, к примеру сумма счета идет обращение к этой функции ,а она в свою очередь также обращается к исходной таблице, что и вьюха. И получается зацикленное обращение. И на клиенте получается всегда небольшой конфликт типа "пока вы правили эту запись другой пользователь изменил ее". Функция простая: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Есть на мускуле что то типа SET NOCOUNT , или команды какой, которая разруливает наложение обращений к одному и тому же ресурсу и из функции и самой вьюхи? Потому что хочется создать полноценную редактируемую вьюху с расчетным полем , которое считает остаток? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 18:07 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Сергей Лалов, Покажите полный комплект объектов, кто к чему обращается? А вообще, использование редактируемых вьюх, на мой взгляд, плохая идея. У них масса ограничений, см. https://dev.mysql.com/doc/refman/8.0/en/view-updatability.html ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 18:58 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
miksoft, Да,согласен, лучше разделять ввод и отчеты , но очень хочется сконструировать что нибудь совместное) Вот тестовые объекты : 1) Таблица t_sales источник где ведется информация по заведению счетов: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
2) Отдельная вьюха v_test_ostatok ,которая считает остаток по разнице sale_prihod- sale_spisano нарастающим итогом по дате и ключу, выводит просто ключ и сам остаток: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
3) Функция funGetOstatok , которая выдергивает остаток из вьюхи v_test_ostatok Код: plsql 1. 2. 3. 4. 5. 6. 7.
4) Ну и наконец результирующая VIEW view_total которая выводится на клиент (выводится , но периодически лочится , как указывал в начале топика. Содержит обращение и к таблице и функцию) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 19:32 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Понимаю, что можно все сократить до одной вьюхи, и без функции и без промежуточной вью с расчетом остатка, но ээфект такой же, идет наложение обращений к одной и той же таблице. Может свойства какие нибудь есть, типа partitial counting или что нить еще подобное.. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 19:49 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Перерасчёт остатка (и в принципе его хранение) вообще одна большая ошибка. RTFM "Переопределённые данные". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 21:15 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Akina, Да, если посмотреть перерасчёт остатков, то два лагеря, кто то апдейтит физические одноимённый поля в таблицах, кто то вычисляет в полях запроса и выводит расчётные значения. И в какой то момент становишься перед выбором, либо обновлять 100 тысяч строк, либо вычислять на лету эти поля в 100 тысяч строках. Одинаково хреново в обеих лагерях)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 21:34 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Akina RTFM "Переопределённые данные". А что в данном контексте мне нужно пересоздавать, функцию или View? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 23:52 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Сергей Лалов что в данном контексте мне нужно пересоздавать, функцию или View? Вопрос века - а что тебе из этого РЕАЛЬНО нужно? v_test_ostatok и funGetOstatok для ЭТОЙ задачи не нужны, так что если нет ещё задачи, в которой они необходимы - то от них следует избавиться. Вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 13:37 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Akina, да по сути кроме таблицы ничего и не нужно. Я писал выше ,что нужна editable view на стороне клиента. Так то на MySql я могу все сделать все в одной вью естественно: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
и вся разница + остатки вычисляется нормально, только она естественно необновляемая на стороне клиента) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 14:28 |
|
stored function + editable View + VBA
|
|||
---|---|---|---|
#18+
Akina RTFM "Переопределённые данные". Я вот по этому пункту немного не понимаю, вы имеете в виду дропать и пересоздавать объекты на какое то событие? К примеру при обращении к View сначала дропаем старое представление и создаем новое (на стороне сервера MySql)? Вы это имеете в виду? Давайте представим, что у меня в MS Access прилинкована View как таблица , в которой хочется перерасчитывать остаток при изменении значений заполняемой строки/строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 14:43 |
|
|
start [/forum/topic.php?fid=47&fpage=19&tid=1828478]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 169ms |
0 / 0 |