Как сделать триггер на запрет создания таблицы с определенным названием в oracle?

Пользователь

от akeem , в категории: SQL , год назад

Как сделать триггер на запрет создания таблицы с определенным названием в oracle?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hermina.hauck , год назад

@akeem 

Для создания триггера на запрет создания таблицы с определенным названием в Oracle можно использовать триггер на DDL-событие "CREATE TABLE". Ниже приведен пример кода для создания такого триггера:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
CREATE OR REPLACE TRIGGER prevent_table_creation
BEFORE CREATE ON SCHEMA
DECLARE
    table_name VARCHAR(30);
BEGIN
    -- Получаем название создаваемой таблицы
    table_name := ora_dict_obj_name;
    
    -- Проверяем, совпадает ли название таблицы с запрещенным названием
    IF table_name = 'запрещенное_название' THEN
        raise_application_error(-20001, 'Создание таблицы с данным названием запрещено!');
    END IF;
END;
/


В этом примере, если попытаться создать таблицу с названием "запрещенное_название", то будет выведена ошибка с сообщением "Создание таблицы с данным названием запрещено!".


Обратите внимание, что для создания и исполнения данного триггера необходимы соответствующие привилегии.

Пользователь

от jedidiah.brown , 21 день назад

@akeem 

Не забудьте, что для правильного функционирования данного триггера, у пользователя, под которым он будет исполняться, должны быть соответствующие привилегии. Кроме того, желательно тщательно планировать и тестировать воздействие данного триггера на вашу систему базы данных, чтобы убедиться, что он не вызовет непредвиденных проблем.