|
|
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Есть таблица : CREATE TABLE public.an_obz ( id int4 DEFAULT nextval('"an_obz_id_seq"'::text) NOT NULL, date char(14), url text, title text, text text, type int4, source char(512), status int4 DEFAULT 0, indexed int2 DEFAULT 0, CONSTRAINT an_obz_pkey PRIMARY KEY (id) ) WITH OIDS; В ней есть записи. Создаю функцию : CREATE or replace FUNCTION public.vav_update_an_obz() RETURNS trigger AS 'begin update an_obz set indexed = 0 where id = old.id; end;' LANGUAGE 'plpgsql' STABLE; Создаю триггер : CREATE TRIGGER up_an_obz AFTER UPDATE ON public.an_obz FOR EACH ROW EXECUTE PROCEDURE vav_update_an_obz(); Т.е. хочу, чтобы при изменении записи в таблице an_obz , значение поля indexed этой записи становилось равным 0... Делаю запрос : update an_obz set text = 'qwewewe' where id = 5; Получаю ошибку : 2004-08-24 15:47:40 [32003] ERROR: control reached end of trigger procedure without RETURN CONTEXT: PL/pgSQL function "vav_update_an_obz" Где собака зарыта ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 15:55:54 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Собака в необходимости RETURN (что-нито) в теле ф-ии. (напр: ... RETURN OLD; END;) например, для вашего случая: Код: plaintext 1. 2. 3. 4. 5. 6. DROP TRIGGER up_an_obz ON public.an_obz; CREATE TRIGGER up_an_obz BEFORE UPDATE ON public.an_obz FOR EACH ROW EXECUTE PROCEDURE vav_update_an_obz(); (А иначе на бесконечный цикл смахивает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 16:47:34 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
авторCREATE or replace FUNCTION public.vav_update_an_obz() RETURNS trigger AS ' DECLARE begin /* update an_obz set indexed = 0 where id = old.id; */ NEW.indexed :=0; Return NEW; end;' LANGUAGE 'plpgsql' STABLE; былин, форматировщик кода глотает /* ... */ внутри строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 16:52:15 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Работает ! Делает то, что нужно ! Спасибо ! Я обожаю триггеры :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 17:01:51 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Работает ! Делает то, что нужно ! Спасибо ! Я обожаю триггеры :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 17:03:31 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Такая же проблема на PG 8.4.0 на FreeBSD если без тригера то вставка проходит иначе ошибка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Функция вставки Код: 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. Тригер Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 16:52:35 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Ну прально... Попробуйте в TG_OP засунуть INSERT и покажите мне где происходит RETURN в триггере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 17:13:33 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
ну там же в теле написано RETURN NEW; после закоментированного запроса Со всеми разговариваю уважительно, но недолго. На вопросы типа ...Как дела? ...не отвечаю, это флуд. © Lister the Tormentor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 17:19:05 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. © Lister the Tormentor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 17:20:59 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
[FIX]IF (TG_OP != ''INSERT'') THEN[/FIX] Это значит что если TG_OP НЕ INSERT то NEW, а если INSERT? То он ни в одну ветку не попадает и вываливается в конец триггера, где RETURN'а нет. О чем и радостно сообщает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 17:21:57 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
Моя невнимательность крайне извиняютсь (( ошибку узрел и прозрел )) Со всеми разговариваю уважительно, но недолго. На вопросы типа ...Как дела? ...не отвечаю, это флуд. © Lister the Tormentor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 17:26:39 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
подскажите как отлаживать триггер? налетаю на Код: sql 1. 2. 3. понимаю что ретурн нужно сделать а вот где и как? функция (осторожно много кода) Код: 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. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. триггер Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 08:33:19 |
|
||
|
проблема с триггером
|
|||
|---|---|---|---|
|
#18+
des1roer, у вас не обрабатывается ELSE. то есть RETURN NEW происходит только в IF и ELSIF. может их вобще убрать из обрабатывания IF..ELSIF..ELSE..END и делать один единственный RETURN NEW; в конце? не углублялся очень в ваш код правда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 13:10:23 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=32663508&tid=1998556]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 456ms |

| 0 / 0 |
