|
|
|
[проблема с триггером в Oracle] Люди добрые, помогите начинающему, plz...
|
|||
|---|---|---|---|
|
#18+
Есть такая проблема: В БД две таблички tQuestions (Quest_id integer, Quest_Text varchar2(400), Answer varchar2(10)); и таблица tAnswers (Answ_ID integer, Quest_ID integer, Answ_Text varchar2(200), Answ_Right integer, Answ_Number integer, Answ_Comment varchar2(300)); tAnswers.Quest_ID связано с tQuestions.Quest_ID внешним ключом; tQuestions.Answer - это строка из 0 и 1, указывающая на правильность ответа по данному вопросу - заполняется триггером на вставку в tAnswers. Тем же триггером заполняется tAnswers.Answ_Number - порядковый номер ответа в строке tQuestions.Answer. Надо, чтобы последовательность tAnswers.Answ_Number не имела разрывов, т.е. была бы инкрементирована на еденичку в пределах определенного вопроса. Так вот, задача: При удалении ответа из tAnswers нужно сделать так, чтобы у всех ответов по данному вопросу, таких что их Answ_Number больше, чем у удаляемого ответа, устанавливалось значение на 1 меньше чем было до удаления. Разумеется, надо менять и запись в поле tQuestions.Answer - вырезать там символ (0 или 1), стоящий на месте удаляемого ответа - но пока проблема не в этом. Надеюсь, задача понятна... :) Вобщем, пишу я триггер create or replace trigger tD_tAnswers after delete on tAnswers for each row begin update tAnswers set Answ_Number=(Answ_Number-1) where Answ_Number>:old.Answ_Number and Quest_ID=:old.Quest_ID; end tD_tAnswers; А он не хочет выполняться... Выводится следующая ошибка при удаленни из tAnswers: "ORA-04091: таблица TANSWERS изменяется, триггер/функция может не заметить это ORA-06512: на "TD_TANSWERS", line 6 ORA-04088: ошибка во время выполнения триггера 'TD_TANSWERS'" Так вот, если можно объясните где моя ошибка и как ее исправить... Что вообще можно посоветовать в данном случае. Заранее благодарен за все указания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2003, 16:13 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32134267&tid=1991142]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
207ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 555ms |

| 0 / 0 |
