powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / exception
3 сообщений из 3, страница 1 из 1
exception
    #32055192
andrej_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема:
есть три таблицы a1, a2, a3 c первичными ключами,
таблица s_hz содержит их как внешние.

При добавлении записи в s_hz
нарушение целостности,
как узнать какой внешний ключ отсутствует?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BEGIN
 INSERT INTO s_hz(k_hz, fk1, fk2, fk3)
 VALUES(............);
 COMMIT;
 EXCEPTION
    WHEN  others THEN 

 -- здесь как-то надо отловить         
 

END;
...
Рейтинг: 0 / 0
exception
    #32055205
DiMonstr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare
  var_count integer;
BEGIN
 INSERT INTO s_hz(k_hz, fk1, fk2, fk3)
 VALUES(............);
 COMMIT;
  return  1 ;
EXCEPTION
  WHEN  others THEN 

    select count(*) into var_count from a1 where id=fk1;
    if var_count= 0  return - 2 ; end if;
    select count(*) into var_count from a2 where id=fk2;
    if var_count= 0  return - 3 ; end if;
    select count(*) into var_count from a3 where id=fk3;
    if var_count= 0  return - 4 ; end if;
    return - 1 ;

END;


ну а вообще лучше всего, прям из клиентской части передавать заведомо правильные коды, просто сделай представления, кекс выбирает, что ему нужно, и нажимает ок.
так все делают и не жжжужжжжжжат. -)
...
Рейтинг: 0 / 0
exception
    #32055216
Попробуй что-нибудь такое, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
BEGIN
  INSERT INTO s_hz(k_hz, fk1, fk2, fk3)
  VALUES(............);
EXCEPTION
  WHEN OTHERS THEN
    IF INSTR(SQLERRM(SQLCODE), 'FK_TBL...') <>  0  THEN
      DBMS_OUTPUT.PUT_LINE('НАРУШЕН КОНСТРЕИНТ С ИМЕНЕМ FK_TBL...');
       -- необходимые действия
 
    END IF;
END;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / exception
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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