Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Запрет на удаление  [new]
sadgin
Member

Откуда:
Сообщений: 7
День добрый,

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

Каким образом это можно сделать?
30 ноя 07, 12:37    [4986806]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 99255
Есть такая переменная user ...
30 ноя 07, 12:38    [4986812]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
raise вставить
30 ноя 07, 12:38    [4986813]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 99255
2Jannny: Все правильно, нам надоело отвечать одинаково и мы теперь
отвечаем "пополам"
30 ноя 07, 12:40    [4986826]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
sadgin
Member

Откуда:
Сообщений: 7
А можно пример?
30 ноя 07, 12:46    [4986874]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
ant74
Member

Откуда: DE
Сообщений: 158
А grant на delete чужому пользователю не давать слишком просто?
30 ноя 07, 12:49    [4986896]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
sadgin
Member

Откуда:
Сообщений: 7
Задача стоит именно сделать это через триггеры
30 ноя 07, 12:51    [4986921]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
sadgin
А можно пример?

CREATE OR REPLACE TRIGGER trg_del 
before delete on tbl_name for each row
begin 
if  user <> 'puper_user' then 
  raise_application_error(-20003,'Нет удалениям во всем мире!');
end if;
end trg_del;
30 ноя 07, 12:53    [4986942]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
sadgin
Member

Откуда:
Сообщений: 7
Спасибо :)
30 ноя 07, 13:04    [4987041]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9113
semenar
sadgin
А можно пример?

CREATE OR REPLACE TRIGGER trg_del 
before delete on tbl_name for each row
begin 
if  user <> 'puper_user' then 
  raise_application_error(-20003,'Нет удалениям во всем мире!');
end if;
end trg_del;


And why for each row?

SY.
30 ноя 07, 16:14    [4988679]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
SY
semenar
sadgin
А можно пример?

CREATE OR REPLACE TRIGGER trg_del 
before delete on tbl_name for each row
begin 
if  user <> 'puper_user' then 
  raise_application_error(-20003,'Нет удалениям во всем мире!');
end if;
end trg_del;


And why for each row?

SY.

Согласен, смостырил из того что было под рукой.
30 ноя 07, 16:22    [4988752]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
SY
semenar
sadgin
А можно пример?

CREATE OR REPLACE TRIGGER trg_del 
before delete on tbl_name for each row
begin 
if  user <> 'puper_user' then 
  raise_application_error(-20003,'Нет удалениям во всем мире!');
end if;
end trg_del;


And why for each row?

SY.

У меня просто в каждой строке службное поле usr и конструкция с ипользованием
:new. or :old.
30 ноя 07, 16:29    [4988800]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Вопрос в в тему:
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?
16 янв 08, 12:25    [5159271]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
Gallagher
Member

Откуда: ( ͡°◞ʖ◟ ͡°)
Сообщений: 542
Ещё правильнее сравнивать не со строкой (которая в случае с именем пользователя должна быть в апперкейсе) а с овнером таблицы имхо
16 янв 08, 12:29    [5159285]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
alexia
Вопрос в в тему:
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?
А в доку глянуть? Defining Your Own Error Messages
16 янв 08, 12:31    [5159305]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
tru55
Member

Откуда: СПб
Сообщений: 19715
alexia
Вопрос в в тему:
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?


PL/SQL User’s Guide and Reference


Defining Your Own Error Messages: Procedure RAISE_APPLICATION_ERROR

To call RAISE_APPLICATION_ERROR, use the syntax

raise_application_error(error_number, message[, {TRUE | FALSE}]);

where error_number is a negative integer in the range -20000 .. -20999 and
message is a character string up to 2048 bytes long.
16 янв 08, 12:33    [5159323]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Про диапазон я знаю.
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то используется, но для других целей?
16 янв 08, 12:38    [5159361]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
ошибся немного:
alexia

Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то не используется для других целей?
16 янв 08, 12:40    [5159381]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
tru55
Member

Откуда: СПб
Сообщений: 19715
alexia
Про диапазон я знаю.
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то используется, но для других целей?


Гарантии нет, это вопрос проектирования. Если ошибка выдается наружу и не перехватывается, вопрос числа - десятый. Если ты в своей процедуре (серверной или клиентской) обрабатываешь исключение, ты должен просмотреть все вызываемые процедуры...
16 янв 08, 12:42    [5159393]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Запрет на удаление  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2624
Как запретить для определенной схемы удалять любую таблицу даже если эта таблица находится в этой же схеме?
5 окт 18, 06:12    [21695937]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
SAS2014
Как запретить для определенной схемы удалять любую таблицу даже если эта таблица находится в этой же схеме?
revoke create session
5 окт 18, 07:40    [21695947]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
Alexander_Ttl
Member

Откуда: Новосибирск
Сообщений: 151
SAS2014, разместить все таблицы в другой схеме и пользоваться синонимами
5 окт 18, 07:56    [21695955]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2624
Alexander_Ttl
SAS2014, разместить все таблицы в другой схеме и пользоваться синонимами

не вариант
5 окт 18, 08:01    [21695959]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2624
база производственная информация привязана к схеме и таблицы
5 окт 18, 08:10    [21695961]     Ответить | Цитировать Сообщить модератору
 Re: Запрет на удаление  [new]
MirnyiAtom
Member

Откуда:
Сообщений: 23
Создать системный триггер на drop table?
5 окт 18, 08:20    [21695963]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить