/ / Як встановити та використовувати атрибут Oracle Connection - java, oracle11g, тригери

Як встановити та використовувати атрибут Oracle Connection - java, oracle11g, тригери

У мене є тригер db, і я хотів би, щоб у певному з'єднанні він не робив його вставлення / оновлення / видалення.

Я думав про використання значення атрибута у своємукод plsql, який вказує, чи є це з'єднання його від певного виду. Я хочу встановити цей атрибут з'єднання в java. Як я можу це зробити? І якщо цього не можна зробити, я відкритий для інших пропозицій, як зробити тригер для того, щоб не робити його логіку в деяких з'єднаннях (залежить від того, які цілі з'єднання).

Відредаговано:

Дякую, хлопці, я думаю, що я маю інше рішення для своєї проблеми. насправді в полі я вставив поле (яке спрацьовує тригер), яке допоможе мені вказати, чи повинен тригер спрацьовувати чи ні.

Відповіді:

0 для відповіді № 1

Один із способів, що я можу придумати, - це використовувати dbms_application_info передати значення до client_info.

У вашій програмі Java виконайте:

cstmt = connection.prepareCall("{call dbms_application_info.set_client_info(?)}");
cstmt.setString(1, "no_triggers");
cstmt.execute();

Тоді у своєму спуску ви можете зробити щось подібне:

create or replace trigger ...
as
declare
l_info varchar(65);
begin
dbms_application_info.read_client_info(l_info);
if l_info = "no_triggers" then
return;
end if;

... actual trigger code follows here

end;

0 для відповіді № 2

Не слід використовувати спеціальний тригер для контролю доступу користувачів, оскільки він може легко стати кошмаром технічного обслуговування. Натомість створіть виділений ROLE або PROFILE яка є тільки GRANTред SELECT на тій таблиці, яку ви використовуєте для свого "спеціального" з'єднання.