|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#18+
Привет всем! Я имею DB2 UDB 8.2 for Win2000 (после FixPack 7). Пока новичок в DB2. Хочу сразу сделать пояснение, я использую опцию WITH ROW MOVEMENT с пониманием для каких целей она служит. Делаю следующее: DROP TABLE NODE_1 CREATE TABLE NODE_1 ( DOC_ID INTEGER NOT NULL, NODE_ID INTEGER NOT NULL, CONSTRAINT NODE1_CHK CHECK (NODE_ID = 1) ENFORCED ENABLE QUERY OPTIMIZATION ) DROP TABLE NODE_2 CREATE TABLE NODE_2 ( DOC_ID INTEGER NOT NULL, NODE_ID INTEGER NOT NULL, CONSTRAINT NODE2_CHK CHECK (NODE_ID = 2) ENFORCED ENABLE QUERY OPTIMIZATION ) DROP VIEW ALL_NODES_V CREATE VIEW ALL_NODES_V AS SELECT * FROM NODE_1 UNION ALL SELECT * FROM NODE_2 WITH ROW MOVEMENT Далее: Код: 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.
Это как понимать? Почему DB2 добавляет новую запись после UPDATE??? Сталкивался кто-либо с такой проблемой и если какой-либо обход? И вообще это "баг" или "причуды SQL" (по Graeme Birchall)? Заранее благодарю за любые пояснения и извините за возможную категоричность! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2004, 18:11 |
|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#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.
Код: 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. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182.
В общем, дело наверное в специфике, каким образом записи обрабатываются в этом случае. Об этом говорит фрагмент update VV set (node,id)=(2,3) where node=2 and id=3 - была получена ошибка вот план запроса: Код: 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. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200.
Видно что на определенном этапе происходит удаление, а затем - вставка. Я полагаю что так как удаление фактически еще не свершилось, то при апдейте значений ключей теми же значениями происходит конфликт. А вообще-то поизучайте план запроса. Мне что-то влом сегодня думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2004, 11:28 |
|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#18+
Привет всем! Обход (workaround) проблемы, с которой я столкнулся, был успешно мною найден!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2004, 16:52 |
|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#18+
дык поделись).... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2004, 16:57 |
|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#18+
Обход заключается в том, что я принудительно присваиваю NEW TRANSITION VARIABLE значение OLD TRANSITION VARIABLE, если новое значение для partition key не выходит за рамки допустимого значения (CHECK CONSTRAINT) для partition. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
P.S. "Мне что-то влом сегодня думать" - я думаю, что теперь я оставляю за собой право на подобные эпитеты в будущем! С уважением, kdima71. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2004, 17:25 |
|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#18+
Information CenterAn update to a view defined using the WITH ROW MOVEMENT 4 clause could cause a delete operation and an insert operation against 4 the underlying tables of the view. 4 For details, see the description of the CREATE VIEW statement. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2004, 07:55 |
|
Срочно! Опция WITH ROW MOVEMENT в VIEW
|
|||
---|---|---|---|
#18+
Т.е. это именно то, что и упоминал gardenman: gardenmanВидно что на определенном этапе происходит удаление, а затем - вставка. Я полагаю что так как удаление фактически еще не свершилось, то при апдейте значений ключей теми же значениями происходит конфликт. А вообще-то поизучайте план запроса. Мне что-то влом сегодня думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2004, 07:57 |
|
|
start [/forum/topic.php?fid=43&msg=32835445&tid=1606060]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 404ms |
0 / 0 |