|
|
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
Суть моей задачи такова: мне нужно создать compound trigger на вставку для таблицы 1, который бы выполнял следующие действия - если число НЕ содержится в таблице 1, то вставить в таблицу 1, иначе вставить в таблицу 2. Как это реализовать? Как делаю я: создаю comp trigger на вставку для таблицы 1. Время выполнения триггера - BEFORE STATEMENT. Если условие выполняется - то ничего не делаю, вставка пройдет сама в таблицу 1, в противном случае - делаю INSERT для таблицы 2, завершая его с помощью брейка (RAISE_APPLICATION_ERROR), чтобы не было добавлено информации в таблицу 1. Это сделано для того, чтобы триггер не добавил данных в таблицу 1. Сам вопрос - возможно ли это сделать по-другому? Я сделал все через *опу? :D КОД: set serveroutput on; CREATE OR REPLACE TRIGGER my_trg FOR INSERT ON member --название таблицы member COMPOUND TRIGGER BEFORE STATEMENT IS BEGIN IF 1=2 THEN DBMS_OUTPUT.PUT_LINE('INSERT INTO TABLE 1'); ELSE Raise_application_error(-20001,'INSERT INTO TABLE 2'); END IF; END BEFORE STATEMENT; END my_trg; / INSERT INTO member VALUES(5,2,1); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:03:07 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
lasosyapwnz, делай инсерт в таблицу2, а таблицу1 создай как вью или матвью он коммит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:40:31 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
lasosyapwnz, А как вы узнаете вставляемые значения BEFORE STATEMENT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 21:43:33 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
на основе INSTEAD OF Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 01:37:49 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
--Eugene-- , у меня задача именно в реализации триггера для таблицы, про instead of я в курсе, он очень удобен, но только для view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 09:20:37 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
--Eugene--lasosyapwnz, А как вы узнаете вставляемые значения BEFORE STATEMENT? спасибо, это я не учел, подумаю.:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 09:21:30 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
lasosyapwnz, Если это препод вам такие задачи ставит, скажите ему, нечего изобретать велисопед и пичкать абитуру всякой хренью. Пусть даёт практически полезные задачи. Используйте MERGE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 10:11:55 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
Насколько помню, компаунд совмещают в себе онстейтмент и онроу триггеры. Возможно, препод хочет, чтобы вы использовали коллекции? То есть собриаешь отдельно все, что надо сложить в тэйбл2 и потом через форалл инсертишь в автер стейтмент части. Но на больших объемах понятно что будет не очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 11:04:50 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
--Eugene--lasosyapwnz, Если это препод вам такие задачи ставит, скажите ему, нечего изобретать велисопед и пичкать абитуру всякой хренью. Пусть даёт практически полезные задачи. Используйте MERGE Вот такой вот у меня преподаватель)) спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 13:39:34 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
СклерозНасколько помню, компаунд совмещают в себе онстейтмент и онроу триггеры. Возможно, препод хочет, чтобы вы использовали коллекции? То есть собриаешь отдельно все, что надо сложить в тэйбл2 и потом через форалл инсертишь в автер стейтмент части. Но на больших объемах понятно что будет не очень хорошо. да, я такой вариант тоже сейчас обдумываю но сложность в реализации тут такая - pragma autonomous_transcation не работает для comp. trigger'a, поэтому заселектить все не получится, будет ошибка мутации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 13:41:02 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
да что ж за эпидемия. читать не умеют, искать не умеют, задачу сформулировать не умеют, выдвигают всякие домыслы, но проверить/опровергнуть самостоятельно их не умеют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 13:59:08 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
lasosyapwnz(...) compound trigger на вставку для таблицы 1, который бы выполнял следующие действия - если число НЕ содержится в таблице 1, то вставить в таблицу 1, иначе вставить в таблицу 2 (...)вообще говоря, "триггер на вставку" не может запретить вставку строки в таблицу, а именно это вы хотите после слова " иначе " (кроме как бросанием исключения, но этот вариант не рассматриваем, поскольку исключение будет видно извне триггера). Поэтому сформулируйте требования по-другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 19:05:16 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
--Eugene--lasosyapwnz(...) compound trigger на вставку для таблицы 1, который бы выполнял следующие действия - если число НЕ содержится в таблице 1, то вставить в таблицу 1, иначе вставить в таблицу 2 (...)вообще говоря, "триггер на вставку" не может запретить вставку строки в таблицу, а именно это вы хотите после слова " иначе " (кроме как бросанием исключения, но этот вариант не рассматриваем, поскольку исключение будет видно извне триггера). Поэтому сформулируйте требования по-другому. Передо мной именно такое задание))) https://pp.vk.me/c636228/v636228989/139fc/KfCiZ3c9nEo.jpg может я не так понял задание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 21:22:54 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
lasosyapwnzможет я не так понял задание?конечно. ведь в картинке нету условия "таблица1 ИЛИ таблица2". там "таблица1 И ИНОГДА таблица2". хотя, судя но именованию таблиц/колонок уже можно понять говнокодерственность автора задания. чем так, уж лучше бы обозвал их просто буквами a, b, c... вашу мать! вот оно в чем дело! - говнопреподы штампуют говнокодеров! :( говносолюшен Код: 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. 201. 202. 203. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 02:59:59 |
|
||
|
Работа с Триггерами
|
|||
|---|---|---|---|
|
#18+
--Eugene--lasosyapwnzможет я не так понял задание?конечно. ведь в картинке нету условия "таблица1 ИЛИ таблица2". там "таблица1 И ИНОГДА таблица2". хотя, судя но именованию таблиц/колонок уже можно понять говнокодерственность автора задания. чем так, уж лучше бы обозвал их просто буквами a, b, c... вашу мать! вот оно в чем дело! - говнопреподы штампуют говнокодеров! :( говносолюшен Код: 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. 201. 202. 203. я видел все эту задачу как либо та либо другая. спасибо огромное за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 08:37:05 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=215&tid=1888012]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 351ms |

| 0 / 0 |
