powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Trigger на constraint
13 сообщений из 13, страница 1 из 1
Trigger на constraint
    #39294448
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу понять как словить ошибку constraint, мне надо сделать триггер что б он заместь ошибки про констраинт
выводил на кого ссылка чтоб провести удаление, можете помочь

к примеру пусть есть

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE supplier
( supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);

CREATE TABLE products
( product_id numeric(10) not null,
  supplier_id numeric(10) not null,
  CONSTRAINT fk_supplier
    FOREIGN KEY (supplier_id)
    REFERENCES supplier (supplier_id)
);



вставка
Код: plsql
1.
2.
3.
4.
5.
6.
7.
INSERT INTO supplier
(supplier_id, supplier_name, contact_name)
VALUES (1000, 'Microsoft', 'Bill Gates');

INSERT INTO products
(product_id, supplier_id)
VALUES (50000, 1000);



пытаюсь удалить ловлю костраинт
Код: plsql
1.
2.
DELETE from supplier
WHERE supplier_id = 1000;



ловлю костраинт
Код: plsql
1.
ORA-02292: integrity constraint (IVANKA.FK_SUPPLIER) violated - child record found
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294453
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM

Но subj-а не существует.
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294486
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

я попробывал вот так не ловит

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace trigger sup_t
before delete on supplier
for each row
declare
    e_no_delete exception;
pragma exception_init (e_no_delete,-02292);
begin
    dbms_output.put_line('awdw');
exception
      when  e_no_delete then
         dbms_output.put_line('Loooooooooooooooooooooooooooooooooo');
end;
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294496
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28Elic,

я попробывал вот так не ловит

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace trigger sup_t
before delete on supplier
for each row
declare
    e_no_delete exception;
pragma exception_init (e_no_delete,-02292);
begin
    dbms_output.put_line('awdw');
exception
      when  e_no_delete then
         dbms_output.put_line('Loooooooooooooooooooooooooooooooooo');
end;

т.е. таким образом ты надеешься всё-таки вставить данные в таблицу?
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294498
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28вот так не ловитЧудак, тебе нужно побольше читать документацию, чтобы больше не выдвигать таких идиотских гипотез о том, что твой бредовый код будет работать так, как тебе мнится, а не так, как положено по документации.
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294510
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

не спорю документацию надо бы почитать, так можете мне подсказать как вместо сообщение
Код: plsql
1.
ORA-02292: integrity constraint (IVANKA.FK_SUPPLIER) violated - child record found

,
выводить свое какоето
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294519
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
begin
   insert into help values('@', 2, 'test');
exception when DUP_VAL_ON_INDEX then
   raise_application_error(-20001, 'Головой подумай.');
end;



Это же можно сделать в триггере instead of.

Но на мой взгляд, задачу интерпретации ексепшенов надо вешать не на базу данных, а на клиентское приложение.
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294524
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28выводить свое какоетоТак:
dmdmdmзадачу интерпретации ексепшенов надо вешать не на базу данных, а на клиентское приложение.
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294531
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

делаю так


Код: plsql
1.
2.
3.
4.
5.
6.
create or replace trigger sup_t
after delete on supplier
for each row
begin 
        raise_application_error(-20001, 'My Text');
end;


при
Код: plsql
1.
delete from supplier where supplier_id=1


выдает
Код: plsql
1.
2.
3.
4.
5.
ORA-20001: My Text
ORA-06512: at "IVANKA.SUP_T", line 2
ORA-04088: error during execution of trigger 'IVANKA.SUP_T'

1. delete from supplier where supplier_id=1



как все таки от всего избавиться и выдавать только мое сообщение
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294533
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28какТугодум, никак.
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294542
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28сделать триггер что б он заместь ошибки про констраинт
выводил на кого ссылка чтоб провести удаление
Сделай свой foreign key on delete cascade и удаление проведётся само.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294565
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

да но мне надо именно переопределить сообщение что выбивается с помощью триггера, его можно переопределить?
...
Рейтинг: 0 / 0
Trigger на constraint
    #39294571
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28его можно переопределить?
Нельзя, обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Trigger на constraint
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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