|
|
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
Проблема в следующем: Допустим есть 2 таблицы: Orders со следующими данными: OrderID | Giv 1 | 10 2 | 0 OrderLinks: OrderID | SoprID | Amount 1 | 4 | 5 1 | 8 | 5 Primary Key составной: OrderID + SoprID Думаю понятно что они связаны по OrderID, а SoprID поле связи с третьей таблицей но это не важно. Поле Giv в таблице Orders должно содержать всегда корректную сумму по полю Amount из таблицы OrderLinks Есть View: Код: plaintext 1. 2. 3. 4. У него есть тригер: Код: plaintext 1. 2. 3. 4. 5. 6. Т.е. задумано так что бы когда удаляем записи из OrderLinks, корректно уменьшалось поле Giv в Orders. Так все и происходит если удаляем по одной записи из приведенного view, если же удаляем более чем одну запись с одинаковым OrderID (данные которые я привел как раз именно в такой ситуации), то возникает следующая ошибка: Another user has modified the contents of this table or view; the database row you are modifying no longer exists in the database. В принципе то понятно почему ошибка возникает, потому что поле Giv в одной и тойже записи апдейтися несколько раз, но может есть возможность обойти эти грабли. Заранее благодарен за ответ ! P.S. Тригер пишется для view'а по сооброжениям не касающихся данной проблемы, и отказываться от view'а не хотелось бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 11:50:21 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
С View, извините, не работал. Поэтому имхо: или 1) перерисовать view, чтобы показал "свежие" данные или 2) в View показывать вместо поля Orders.giv поле из временной таблицы - копии Orders. Может кто умнее что-то лучшее подскажет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 12:05:43 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
А группировать deleted по OrderID разве нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 12:15:31 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
А по моему если строку Код: plaintext 1. заменить на Код: plaintext 1. 2. Будет работать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 12:58:23 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
Да решение здравое поменял в тригере Update: Код: plaintext 1. 2. и должно было бы сработать, но почему-то не сработало, возникла та же ошибка, только теперь я не совсем понимаю почему, подозреваю что ошибка возникает из-за того что во view включено поле giv ... Так и есть убрал из view поле giv, но оставил INNER JOIN и все сработало и даже в старом варианте без группировки по OrderID, т.е. получается что изначально проблема была в том что во view включено поле giv которое изменяется во время удаления. И как с этим дальше бороться, view мне нужен с этим полем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 13:00:11 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
Сорри обшибся строка должна выглядеть так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 13:00:28 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
Тьфу ты блин, опять неправильно указал теперь забыл указать Group By но я думаю все поняли общую мысль :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 13:02:47 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
Да решение здравое поменял в тригере Update: Код: plaintext 1. 2. и должно было бы сработать, но почему-то не сработало, возникла та же ошибка, только теперь я не совсем понимаю почему, подозреваю что ошибка возникает из-за того что во view включено поле giv ... Так и есть убрал из view поле giv, но оставил INNER JOIN и все сработало и даже в старом варианте без группировки по OrderID, т.е. получается что изначально проблема была в том что во view включено поле giv которое изменяется во время удаления. И как с этим дальше бороться, view мне нужен с этим полем. Mvg_First я понял твой вариант ты имел в виду вот так: Код: plaintext То же самое если убрать из view поле giv то все работает если нет то проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 13:34:18 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
А на табличке OrderLinks есть primary key? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 14:45:13 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#18+
Да, я написал же, что в ней составной Primary Key: OrderID+SoprID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2002, 08:17:19 |
|
||
|
Подскажите как победить ?
|
|||
|---|---|---|---|
|
#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. 62. 63. 64. у меня все работает идеально. Код: plaintext 1. 2. 3. 4. 5. 6. Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2002, 11:48:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32058339&tid=1819578]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 418ms |

| 0 / 0 |
