|
|
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Помогите новичку, плз ... Пример: таблица А - заказы, таблица Б - товары. При вставке нового товара (в таблицу Б) необходимо пересчитать сумму заказа (в таблице А). Как это сделать? В триггере на таблице Б? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 18:32 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Если у тебя есть ограничение ссылочной целостности (foreign key constraint), то в триггере на ребенке скорее всего на мутацию родителя натолкнешься. Обычно мы делали так: в row-level-триггере after insert or update or delete на таблицу Б заполняли pl/sql таблицу идентификаторами заказа, сумму которых надо пересчитать, а потом в statement-триггере опять же на Б эти заказы в таблице А пересчитывали. Или можно сохранять суммы/изменения сумм каждой изменяющейся позиции, и потом корректировать сумму всего заказа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 18:51 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
а можно пример ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 19:06 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Длинный немного, но вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 10:34 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 10:59 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Не хочу никиго обидеть, но подход предложенный Denis Popov. Это плохой подход. Покрайней мере если колиента писать на Oracle Form возникают проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 12:08 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
кажись подход Denis Popov стандартный для борьбы с мутирующими таблицами, он еще у Урмана описан. А какие с ним проблемы в Forms? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 12:49 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Если в триггере происходит изменнение каких -то полей таблицы( например поля STATUS ) и это поле отображаеться в форме, то потом невозможно заставить формы перечитать это поле. приходиться делать перечитку руками. Это только одна из проблем.Всех вспомнить не могу. Как появяться еще напишу. Люди которые очень давно работают с оракле и формами очень ну очень сильно ругаються если так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 13:01 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
ну это Forms лажает... без триггеров никак не обойтись... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 13:18 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Пишим проект который начинали писать индусы. Т.е они его написали . А мы перепесмвыем его под нашу страну. ТАк они умудрились написать без этих триггеров. И все работает!! )). Кстати пишут они очень аккуратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 14:36 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Выхода тут два: 1. Избавиться от поля суммы всего заказа, вычисляя его "на лету". Кстати, первые этой абзацы статьи "Информационная система и реляционная СУБД" декларируют это: http://www.oracle.com/ru/oramag/novdec2002/index.html?general_rdbms.html 2. Изменять таблицы закаков и его позиций только через процедуры. В них уже можно накрутить логику дополнительного обсчета, если было принято решение хранить поле суммы заказа. Интересно, а нарушает ли это поле какую-нибудь нормальную форму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 14:55 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Prosch ispolzovat avtonomnuyu tranzakciu dlia master-tablici. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2003, 18:17 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
to ShgGena а можно раскрыть тему, если нетрудно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2003, 06:07 |
|
||
|
Как сделать update на master-таблицу
|
|||
|---|---|---|---|
|
#18+
Denis Popov wrote: >>Интересно, а нарушает ли это поле какую-нибудь нормальную форму? Никакую нормальную форму это не нарушает. Это нарушает принцип недопущения избыточности информации, который сводится к тому, что не следует хранить в БД информацию, которая может быть получена(вычислена) по информации уже находящейся в БД. Хотя с практической точки зрения хранение суммы в самом заказе возможно вполне оправдано, зависит от приложения и критических ресурсов сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2003, 10:11 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32094278&tid=1992063]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
170ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 512ms |

| 0 / 0 |
