Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Trigger на constraint / 13 сообщений из 13, страница 1 из 1
19.08.2016, 11:16:13
    #39294448
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Не могу понять как словить ошибку 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
19.08.2016, 11:18:49
    #39294453
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM

Но subj-а не существует.
...
Рейтинг: 0 / 0
19.08.2016, 11:45:17
    #39294486
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
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
19.08.2016, 12:00:37
    #39294496
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
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
19.08.2016, 12:01:22
    #39294498
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Dimmf28вот так не ловитЧудак, тебе нужно побольше читать документацию, чтобы больше не выдвигать таких идиотских гипотез о том, что твой бредовый код будет работать так, как тебе мнится, а не так, как положено по документации.
...
Рейтинг: 0 / 0
19.08.2016, 12:23:09
    #39294510
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Elic,

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

,
выводить свое какоето
...
Рейтинг: 0 / 0
19.08.2016, 12:33:42
    #39294519
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Код: 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
19.08.2016, 12:40:10
    #39294524
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Dimmf28выводить свое какоетоТак:
dmdmdmзадачу интерпретации ексепшенов надо вешать не на базу данных, а на клиентское приложение.
...
Рейтинг: 0 / 0
19.08.2016, 12:51:22
    #39294531
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
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
19.08.2016, 12:55:18
    #39294533
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Dimmf28какТугодум, никак.
...
Рейтинг: 0 / 0
19.08.2016, 13:10:41
    #39294542
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Dimmf28сделать триггер что б он заместь ошибки про констраинт
выводил на кого ссылка чтоб провести удаление
Сделай свой foreign key on delete cascade и удаление проведётся само.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.08.2016, 13:29:48
    #39294565
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trigger на constraint
Dimitry Sibiryakov,

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


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