Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! Столкнулся я с одной проблемой, не знаю как решить Суть задачи такова. При добавлении записи в таблицу процедура,из таблицы расход должны браться количество расходных материалов и отниматься от таблицы расходные материалы Написанный мною триггер выдает: Вложенный запрос вернул больше одного значения. Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2017, 21:56 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
dante0101Написанный мною триггер выдает: Вложенный запрос вернул больше одного значения.потому что Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2017, 23:24 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
dante0101, Дедушка прав. Но я бы, с архитектурной точки зрения, предложил бы Вам вообще отказаться от триггера. Во-первых, обновление записей - это источник блокировок. Во-вторых, так как у Вас будут не только расходы процедуры, а так же приходы и корректировки количества, то Вы потом и не поймете, откуда у Вас такое количество вообще взялось. Поэтому, предлагаю убрать из таблицы Расходные_материалы колонку Колличество_оставшегося_материала. Вот так: Код: sql 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. Добавить таблицу Приход_материалов вот так: Код: sql 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. А для получения актуальных остатков сделать VIEW; Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2017, 23:59 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
dante0101, Никогда так не делайте: ptr128А для получения актуальных остатков сделать VIEW; Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Помимо того, что запрос будет лопатить все приходы и расходы по затронутым материалам, действительно актуальные остатки можно получить только на TIL serializable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 12:26 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
invmdante0101, Помимо того, что запрос будет лопатить все приходы и расходы по затронутым материалам, действительно актуальные остатки можно получить только на TIL serializable. А Вам жалко? Я так понял, что тут за год и 100 тыс. операций не наберется. А раз в год все можно переносить в архив. А так как актуальные остатки используются только для отчета, то тут я бы, скоре, READ UNCOMMITED использовал ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 12:31 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
ptr128А Вам жалко?Мне нет. Если ТС предпочтет делать хрень, то его проблемы. ptr128А так как актуальные остатки используются только для отчетаОпять свой личный опыт экстраполируете на целый мир? По-вашему того, кто хочет что-то забрать со склада, в принципе не должно интересовать а сколько этого что-то на складе есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:12 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
А в каких вузах учат писать автор ID _материалов Это же безумие какое-то? Кто вообще автора учил объекты БД именовать кирилицей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:21 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
CammomileЭто же безумие какое-то? Кто вообще автора учил объекты БД именовать кирилицей?и какой язык является "провославным" для именования объектов БД с вашей точки зрения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:40 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
invmПо-вашему того, кто хочет что-то забрать со склада, в принципе не должно интересовать а сколько этого что-то на складе есть? В постановке задачи ТС это как раз совершенно не интересно. Перечитайте внимательно, что он написал. А как хотел ТС, так делать вообще не допустимо. Он собирался обновлять несколько записей одной таблицы в произвольном порядке в пределах одной транзакции, что гарантированно будет приводить к дидлокам. Я понимаю Ваше желание продвигать более правильные подходы, с двух шаговой обработкой (резервирование по всем строкам, если успешно - то списание), но они далеко выходят за рамки задачи, поставленной ТС и уж точно не предназначены для реализации в триггере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:44 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
ДедушкаCammomileЭто же безумие какое-то? Кто вообще автора учил объекты БД именовать кирилицей?и какой язык является "провославным" для именования объектов БД с вашей точки зрения? Cammomile, конечно, излишне категоричен. Но, с точки зрения повторного использования кода на других проектах, конечно, лучше ограничиваться латинскими буквами. А то сегодня заказчик из России, а завтра - уже из Бельгии или ОАЭ. В случае ТС, это уж точно не имеет никакого значения, так что пусть называет объекты БД так, как ему заблагорассудится ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:05 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
CammomileЭто же безумие какое-то? Кто вообще автора учил объекты БД именовать кирилицей? навеяло... анекдотКак вы так быстро изучили английский?! Это было очень просто - он очень похож на SQL! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:23 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Начнем с того, что программист должен все делать рационально и разумно. Именовать объекты бд кирилицей нерационально хотяб потому, что постоянно надо переключать раскладку, для написания непосредственно языковых инструкций. Далее, даже если кодер 100% уверен, что его проект никто не будет использовать на международной арене, писать по-русски это просто дурной тон. Так уж исторически сложилось, что программирует весь мир по-английски. (Если не считать всякиз один-эсеров, у которых свое "пограмирование") Далее, ежели все таки принято судьбоносное решение писать поля да таблицы кирилицей, то будь добр выдерживать стиль. ID_объекта это такая же криворукая порнография как tsena_one_l_benzina или ItogoProdaz. Про прочие разезды между аппер кемелом, снейккейсом и аппер снейком я вообще молчу. Хочется взять и дать тапкой по рукам, за такие коды. Триггеры у него не пишутся - научись код оформлять сначала, а потом в триггеры лезь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:26 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
использовать кириллицу можно, только как потом отличать Eng?RusEng?RusCСНHОOТTBВEЕ etc и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:37 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Cammomile, Не смотря на то, что с истинностью Ваших высказываний я согласен, хочу заметить, что Ваш тон и стиль скорее может отбить у новичка всякое желание изучать SQL, чем донести до него какие-то истины. Какова цель этого Вашего поста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:38 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
CammomileПро прочие разезды между аппер кемелом, снейккейсом и аппер снейком я вообще молчу. Camel-case знаю, Snake-case знаю, а вот про эти впервые слышу, что за звери такие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:39 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичCammomileПро прочие разезды между аппер кемелом, снейккейсом и аппер снейком я вообще молчу. Camel-case знаю, Snake-case знаю, а вот про эти впервые слышу, что за звери такие? UpperCamelCase loverCamelCase snake_case UPPER_SNAKE_CASE Какой_то_Хренокейс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:51 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
CammomileCamelCase snake_case и dash-case (он же hypens)? Итого, имеем как минимум 3 вида "валидных" "общепринятых" способов написания названий. Добавляем к ним некоторые вариации и уже получаем с десяток "общепринятых" способов. CammomileИменовать объекты бд кирилицей нерационально хотяб потому, что постоянно надо переключать раскладку Вот это нормальное обоснование. Все остальное - шелуха предрассудков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:59 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Где шелуха? Я же не спорю за КемелКейс против снейк_кейса, я говорю, что стиль должен быть единый. Какая-такая шелуха предрассудков? Ну давайте тогда,вообще, [Именовать объекты :: как попало], то-то будет вольница и расцвет молоды талантов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 15:03 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Cammomile[Именовать объекты :: как попало] WHY нет? Нормальный такой стиль. Только нужно будет везде брекеты использовать, а 90% их не ставят потому что "код выглядит компактнее". А это переучиваться - не зайдет, короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 15:07 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
ptr128Он собирался обновлять несколько записей одной таблицы в произвольном порядке в пределах одной транзакции, что гарантированно будет приводить к дидлокам.Теперь ТС испугается страшного слова и будет в цикле обновлять каждую строку в отдельной транзакции. У вас классный хрустальный шар: не видя ни запроса, ни его плана - сразу ставите диагноз. ptr128и уж точно не предназначены для реализации в триггере.Очередной триггерофоб... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:08 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
invmОчередной триггерофоб... Докажите, что я не прав, и UPDATE ptr128нескольких записей одной таблицы в произвольном порядке в пределах одной транзакции из нескольких параллельных запросов не может привести к дидлоку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:15 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
ptr128Докажите, что я не правНет уж. Сначала вы доказывайте свою правоту насчет неприменимости триггеров. ptr128не может привести к дидлокуПокажите место, где я утверждал, что "не может". Заодно поясните каким образом связаны триггер и дедлочащий update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:45 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
invmЗаодно поясните каким образом связаны триггер и дедлочащий update. Код: sql 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. Двумя потоками запускаем Код: sql 1. У меня через несколько секунд на одном из потоков выдало: Код: sql 1. 2. А теперь или извиняйтесь за наезд, или доказывайте Вы правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 21:54 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
Рыбка не понимает, что не триггер приводит к deadlock, что тут поделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 09:35 |
|
||
|
не удается написать триггер
|
|||
|---|---|---|---|
|
#18+
TaPaK, Чукча ни читатель, чукча писатель? ptr128Он собирался обновлять несколько записей одной таблицы в произвольном порядке в пределах одной транзакции, что гарантированно будет приводить к дидлокам. И совершенно не важно в триггере это будет происходить или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 09:46 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39575497&tid=1690606]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 417ms |

| 0 / 0 |
