Я хочу переопределить сообщение, генерирующее ошибку (ORA-02292). Это сообщение как тотриггер, чтобы отменить сообщение до ошибки (ORA-02292)
ORA-02292: integrity constraint (IVANKA.FK_SUPPLIER) violated - child record found
Я хочу триггер, чтобы отменить вышеуказанное сообщение на его примере на этом (МОЕ переопределение :))
я попытался сделать, как этот
для первого создания таблицы
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)
);
затем вставить данные
INSERT INTO supplier
(supplier_id, supplier_name, contact_name)
VALUES (1000, 'Microsoft', 'Bill Gates');
INSERT INTO products
(product_id, supplier_id)
VALUES (50000, 1000);
то не вызывают
create or replace trigger sup_z
after delete on supplier
for each row
declare
v_error_constraint exception;
pragma exception_init(v_error_constraint, -2292);
begin
null;
exception
When v_error_constraint then
raise_application_error(-20001,
'My ovvervide:)');
End;
то не удалить, чтобы сгенерировать сообщение
DELETE from supplier
WHERE supplier_id = 1000
, но я не вижу мое сообщение в триггере я вижу
ORA-02292: integrity constraint (IVANKA.FK_SUPPLIER) violated - child record found
Можете ли вы мне помочь? Что я делаю не так?
Нарушение ограничения прекращается до срабатывания триггера. –
Ваш процесс нарушает ограничение родительского дочернего элемента, которое, вероятно, оставило бы осиротевшие записи. Вы должны либо удалить дочерние элементы перед удалением родительской записи, либо, возможно, отказаться от ограничения. –
Я знал, как решить ошибку с ограничением, но мне нужно только напечатать другое сообщение – VasyPupkin