Невозможно обновить данные в базе данных с помощью этого триггера

CREATE OR REPLACE TRIGGER tr_or_cl_sup_line
   BEFORE UPDATE OF line_num
   ON line
   FOR EACH ROW
DECLARE
   n_out       NUMBER;
   n_seqnum    NUMBER;

   CURSOR cur_cmpnt (c_lineid NUMBER)
   IS
      SELECT cmpnt_id
        FROM component
       WHERE line_id = c_lineid;

   n_cmpntid   NUMBER;
   v_inuser    VARCHAR2 (30);
BEGIN
   p_pause_triggers (n_out);

   IF n_out = 1
   THEN
      RETURN;
   END IF;

   n_out := 0;

   SELECT user_name
     INTO v_inuser
     FROM current_info
    WHERE session_id = USERENV ('SESSIONID');

   IF f_etf_check = 'Y'
   THEN
      p_or_sup ('TR_OR_CL_SUP_line', 'LINE_ID', :new.line_id);
   ELSE
      NULL;
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      RAISE;
END tr_or_cl_sup_line;

Этот триггер уже существует в базе данных, но когда я пытаюсь обновить данные в таблице LINE с помощью запроса на обновление, выдает ошибку:

ORA-01403: no data found

ORA-06512: at "ZOR_1.TR_OR_CL_SUP_LINE", line 1

ORA-04088: error during execution of trigger 'ZOR_1.TR_OR_CL_SUP_LINE'

ВЫБЕРИТЕ имя_пользователя INTO v_INuser FROM current_info WHERE session_id = USERENV ('SESSIONID'); Это может не приводить к строке.

ArtBajji 21.03.2018 06:24

после удаления этого по-прежнему появляется та же ошибка

S. A. 21.03.2018 07:08

Исключая это, есть два других места, где может возникнуть эта ошибка. P_pause_triggers (n_Out); и P_OR_sup ('TR_OR_CL_SUP_line', 'LINE_ID',: NEW.line_id);

ArtBajji 21.03.2018 07:31

Удалите раздел ИСКЛЮЧЕНИЕ, он бесполезен (как сейчас выглядит). Тем не менее, это не исправит ваш НЕТ ДАННЫХ НАЙДЕН.

Littlefoot 21.03.2018 08:45

@Littlefoot, я тоже так делал, но не нашел решения

S. A. 21.03.2018 08:58

@ArtBajji Я удалил это из кода и получил эту ошибку: ORA-04098: триггер 'ZOR.TR_OR_CL_SUP_LINE' недействителен и не прошел повторную проверку

S. A. 21.03.2018 09:06

@ArtBajji Могу ли я отключить триггер? если я отключаю триггер, то обновление работает нормально, я хочу знать о последствиях

S. A. 21.03.2018 09:09

@ S.A. - если вы удалили обработчик исключений, вы должны увидеть более полезную информацию в сообщении об ошибке - в какой строке он действительно не работает. Если все, что вы изменили, останавливает его перекомпиляцию, посмотрите в user_errors, чтобы понять, почему.

Alex Poole 21.03.2018 09:30

Как предложили Алекс и Литтлфут, после удаления раздела исключений, какую ошибку вы получаете? Вы можете вставить это сюда?

ArtBajji 21.03.2018 09:39

@AlexPoole, когда я удалил ошибку, она ни на что не повлияла, появляется та же ошибка ORA-01403: данные не найдены ORA-06512: в «ZOR_1.TR_OR_CL_SUP_LINE», строка 1 ORA-04088: ошибка при выполнении триггера ZOR_1. TR_OR_CL_SUP_LINE '

S. A. 21.03.2018 10:06

@AlexPoole, но если я отключу триггер, а затем обновлю, после этого включите триггер - этот сценарий работает нормально, но я не знаю, как он повлияет в будущем на базу данных

S. A. 21.03.2018 10:13

Он не сообщает вам номер строки перед сообщением ORA-01403? (Предположительно, триггер существует по какой-то причине и делает что-то важное; отключение не влияет на базу данных в точности, но может повлиять на целостность ваших данных, поэтому это не жизнеспособный обходной путь, если вы не получите деловое соглашение о том, что он больше не нужен.)

Alex Poole 21.03.2018 10:13

это говорит в строке 1

S. A. 21.03.2018 10:16

Что касается вашей ошибки: «ORA-04098: триггер 'ZOR.TR_OR_CL_SUP_LINE' недействителен и не прошел повторную проверку», есть ли ошибки компиляции? Пожалуйста, вставьте ошибку.

ArtBajji 23.03.2018 04:53

@ArtBajji Что касается ORA-04098, я получаю следующую причину и действие: Ошибка SQL: ORA-04098: триггер «ZOR.TR_OR_CL_SUP_LINE» недействителен и не прошел повторную проверку 04098. 00000 - «триггер«% s.% S »недействителен и не удалось выполнить повторную проверку "* Причина: была предпринята попытка получить триггер для выполнения, но он оказался недействительным. Это также означает, что для триггера не удалось выполнить компиляцию / авторизацию. * Действие: Возможны следующие варианты: устранение ошибок компиляции / авторизации, отключение триггера или сброс триггера.

S. A. 29.03.2018 05:47

следуя приведенным выше инструкциям, если я отключаю триггер и не могу удалить таблицу

S. A. 29.03.2018 05:50

Похоже, в триггере есть ошибки компиляции. Это не может быть выполнено. Перекомпилируйте триггер и используйте команду show errors, чтобы узнать, в чем заключается ошибка компиляции, и вставьте сюда ошибку компиляции. Надеюсь это поможет.

ArtBajji 29.03.2018 16:43

Приближается следующая ошибка: - Ошибка (1,437): PLS-00103: обнаружен символ «конец файла» при ожидании одного из следующих событий: (начало случая объявить конец исключения выхода для goto if loop mod null pragma raise return select update в то время как с <идентификатором> <идентификатор-разделителя в двойных кавычках> <переменная связывания> << продолжить закрыть текущее удаление выборка блокировка вставить открыть откат сохранить точку установить sql выполнить фиксацию для всех слияний очистка канала

S. A. 03.04.2018 06:48
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
18
87
0

Другие вопросы по теме