Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка в триггере, хотя он создался / 7 сообщений из 7, страница 1 из 1
04.05.2017, 19:21
    #39448982
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
Суть в том, что есть таблица со студентами, и, если студент меняет фамилию, то триггер отлавливает этот момент и создает запись в табличке "фамилия", указывая код студента,старую и новую фамилию, дату смены.
Для меня проблемно было выловить код студента, но я , вроде, решил это с помощью курсора.
Но оно все равно не работает :С
Может кто помочь?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE OR REPLACE TRIGGER trig_obn_fam AFTER UPDATE ON ZP_STUDENTS FOR EACH ROW
   BEGIN
  IF :NEW.FAM<>:OLD.FAM THEN 
    DECLARE
      tabn1 ZP_STUDENTS.TABN%TYPE;
      CURSOR c1 IS SELECT zs.TABN FROM ZP_STUDENTS zs WHERE zs.FAM=:NEW.FAM;
      BEGIN
      OPEN c1;
      LOOP FETCH c1 INTO tabn1;  
	    EXIT WHEN c1%NOTFOUND;
      END LOOP;
      CLOSE c1;
      COMMIT;
    INSERT INTO ZP_FAMILIYA (
  KOD, TABN, ST_FAM, NOV_FAM, DATA_SMENY
)
VALUES (TRIG_SEQ.NEXTVAL, tabn1, :NEW.FAM, :OLD.FAM, SYSDATE);
    END;
END IF;
END;
...
Рейтинг: 0 / 0
04.05.2017, 19:31
    #39448986
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
Ошибка в триггере

Нам будет суждено ее увидеть?

1. Commit в триггере/.
2. Читаем текст ошибки, переводим, думаем. Последний пункт самый сложный, да.
...
Рейтинг: 0 / 0
04.05.2017, 19:37
    #39448989
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
dmdmdm,
commit убрал, та же ошибка.
...
Рейтинг: 0 / 0
04.05.2017, 19:44
    #39448993
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
Top 6 .

Но в данном случае достаточно условия IF :NEW.FAM<>:OLD.FAM, запрос из таблицы не нужен.
...
Рейтинг: 0 / 0
04.05.2017, 19:47
    #39448994
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
dmdmdm,

а как мы тогда узнаем у какого именно студента изменилась фамилия?
...
Рейтинг: 0 / 0
04.05.2017, 20:49
    #39449006
efendi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
Bastist29,

Не совсем понятно - зачем искать код по новой фамилии, ведь код и так известен уже

Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE OR REPLACE TRIGGER trig_obn_fam AFTER UPDATE ON ZP_STUDENTS FOR EACH ROW
BEGIN
  IF :NEW.FAM<>:OLD.FAM THEN 
    INSERT INTO ZP_FAMILIYA (KOD, TABN, ST_FAM, NOV_FAM, DATA_SMENY)
                              VALUES (TRIG_SEQ.NEXTVAL, :OLD.TABN, :NEW.FAM, :OLD.FAM, SYSDATE);
  END IF;
END;
...
Рейтинг: 0 / 0
04.05.2017, 23:28
    #39449053
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в триггере, хотя он создался
efendi,
оу, а ведь точно, спасибо
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка в триггере, хотя он создался / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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