|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
Пишу триггер в первый раз, поэтому если тапками - то небольно :) Как-то у меня с ним не сложилось, и он не желает отрабатываться. Что требуется: при добавлении данных в одну таблицу, запомнить время добавления этих данных и записать его с частью нужных парамеров в другую таблицу. Подскажите, где косяк! Код: plaintext
BEFORE INSERT OR UPDATE ON VTD_IRIS.DEF_REPAIRS REFERENCING NEW AS new OLD AS old FOR EACH ROW DECLARE log_rep DATE; BEGIN SELECT TO_DATE (SYSDATE, 'dd.mm.yyyy') INTO log_rep FROM DUAL; --запоминаем сегодняшнюю дату IF ( :new.k_otch IS NOT NULL AND :new.k_dp IS NOT NULL AND :new.odometer IS NOT NULL) если есть данные THEN FOR ii IN (SELECT DISTINCT DR.K_OTCH, DR.K_DP, SD.ID_LCH FROM VTD_IRIS.DEF_REPAIRS dr, s_otch_sum_dp sd WHERE DR.K_OTCH = SD.K_OTCH AND DR.K_DP = SD.K_DP AND DR.ODOMETER BETWEEN SD.UCH_L1 * 100000 AND SD.UCH_L2 * 100000 AND k_defrep = :new.k_defrep) выбираем нужные LOOP INSERT INTO vtd_iris.defrep_otch_data (k_dp, id_lch, k_otch, date_defrep) VALUES (ii.k_dp, ii.id_lch, ii.k_otch, log_rep); заполняем нужную таблицу END LOOP; END IF; EXCEPTION WHEN OTHERS THEN RAISE; END tgr_defrep_log; ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:31 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZia, оракл? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:34 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
Shakill, угу Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:37 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZia, не глотай ошибки. покажи чего пишет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:43 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZia, Для начала уберем лишнее. Попробуй так Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:46 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
Vintне глотай ошибки. покажи чего пишет. Мутация вестимо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:46 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
Vint, в том-то и дело, что ничего. Вроде как выполнилось, а конечная таблица - пустая :( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:47 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
__vvp_, ага. Так все получилось. Видимо, в соединении с другой таблицей ошибка. Ушла искать косяк. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:50 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZia__vvp_, ага. Так все получилось. Видимо, в соединении с другой таблицей ошибка. Ушла искать косяк. Спасибо! Не спеши, я вторую таблицу (s_otch_sum_dp) не заюзал :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:51 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
Непонятно зачем в ведомой талице, данные, когда была внесена запись в родителя. Добавьте поле, сделайте его default sysdate. авторв том-то и дело, что ничего. Вроде как выполнилось, а конечная таблица - пустая :( commit не забыли? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:52 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
__vvp_, я поняла. Хочу попробовать без цикла сделать. Кажется, я с ним перемудрила, можно и обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:52 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
semenar, не забывала :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:52 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZiaв том-то и дело, что ничего. Вроде как выполнилось, а конечная таблица - пустая :( Потому что триггер - BEFORE. Выбирать ещё не вставленную запись бесполезно. (А уже вставленную - глупо.) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:55 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZia__vvp_, я поняла. Хочу попробовать без цикла сделать. Кажется, я с ним перемудрила, можно и обойтись. Еще в триггере нельзя обращаться к изменяемой таблице. Будет т.н. мутация ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:56 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:59 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
__vvp_Еще в триггере нельзя обращаться к изменяемой таблице. Будет т.н. мутация т.е. я не могу писать триггер для добавления данных во вторую таблицу при изменении первой? оО ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 17:01 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZia__vvp_Еще в триггере нельзя обращаться к изменяемой таблице. Будет т.н. мутация т.е. я не могу писать триггер для добавления данных во вторую таблицу при изменении первой? оО А почитать топ вопросов? Или воспользоватся поиском по форуму? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 17:04 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZiaУра-ура, заработало! Существует конструкция INSERT SELECT. Т.е. можно одним оператором сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 17:17 |
|
Триггер не хочет работать
|
|||
---|---|---|---|
#18+
ms_AmneZiaУра-ура, заработало! Вы ещё вернётесь, когда ваш триггер сработает несколько раз подряд для одной и той же записи. Не нужно использовать для протоколирования before-триггера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 17:43 |
|
|
start [/forum/topic.php?fid=52&msg=37863398&tid=1903014]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
181ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 527ms |
0 / 0 |