powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / [проблема с триггером в Oracle] Люди добрые, помогите начинающему, plz...
2 сообщений из 2, страница 1 из 1
[проблема с триггером в Oracle] Люди добрые, помогите начинающему, plz...
    #32134262
PartyZaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая проблема:

В БД две таблички
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'"

Так вот, если можно объясните где моя ошибка и как ее исправить... Что вообще можно посоветовать в данном случае. Заранее благодарен за все указания.
...
Рейтинг: 0 / 0
[проблема с триггером в Oracle] Люди добрые, помогите начинающему, plz...
    #32134267
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sm topic "Nugna pomosh' s triggerom " na etoi page.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / [проблема с триггером в Oracle] Люди добрые, помогите начинающему, plz...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]