Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрет на удаление / 25 сообщений из 42, страница 1 из 2
30.11.2007, 12:37
    #34977702
sadgin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
День добрый,

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

Каким образом это можно сделать?
...
Рейтинг: 0 / 0
30.11.2007, 12:38
    #34977706
dmidek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Есть такая переменная user ...
...
Рейтинг: 0 / 0
30.11.2007, 12:38
    #34977707
Jannny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
raise вставить
...
Рейтинг: 0 / 0
30.11.2007, 12:40
    #34977717
dmidek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
2Jannny: Все правильно, нам надоело отвечать одинаково и мы теперь
отвечаем "пополам"
...
Рейтинг: 0 / 0
30.11.2007, 12:46
    #34977739
sadgin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
А можно пример?
...
Рейтинг: 0 / 0
30.11.2007, 12:49
    #34977752
ant74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
А grant на delete чужому пользователю не давать слишком просто?
...
Рейтинг: 0 / 0
30.11.2007, 12:51
    #34977763
sadgin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Задача стоит именно сделать это через триггеры
...
Рейтинг: 0 / 0
30.11.2007, 12:53
    #34977776
semenar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
sadginА можно пример?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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;
...
Рейтинг: 0 / 0
30.11.2007, 13:04
    #34977834
sadgin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Спасибо :)
...
Рейтинг: 0 / 0
30.11.2007, 16:14
    #34978676
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
semenar sadginА можно пример?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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.
...
Рейтинг: 0 / 0
30.11.2007, 16:22
    #34978708
semenar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
SY semenar sadginА можно пример?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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.
Согласен, смостырил из того что было под рукой.
...
Рейтинг: 0 / 0
30.11.2007, 16:29
    #34978733
semenar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
SY semenar sadginА можно пример?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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.
...
Рейтинг: 0 / 0
16.01.2008, 12:25
    #35065028
alexia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Вопрос в в тему:
Код: plaintext
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?
...
Рейтинг: 0 / 0
16.01.2008, 12:29
    #35065036
Gallagher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Ещё правильнее сравнивать не со строкой (которая в случае с именем пользователя должна быть в апперкейсе) а с овнером таблицы имхо
...
Рейтинг: 0 / 0
16.01.2008, 12:31
    #35065045
Madness
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
alexiaВопрос в в тему:
Код: plaintext
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?А в доку глянуть? Defining Your Own Error Messages
...
Рейтинг: 0 / 0
16.01.2008, 12:33
    #35065055
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
alexiaВопрос в в тему:
Код: plaintext
  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.
...
Рейтинг: 0 / 0
16.01.2008, 12:38
    #35065066
alexia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Про диапазон я знаю.
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то используется, но для других целей?
...
Рейтинг: 0 / 0
16.01.2008, 12:40
    #35065075
alexia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
ошибся немного:
alexia
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то не используется для других целей?
...
Рейтинг: 0 / 0
16.01.2008, 12:42
    #35065085
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
alexiaПро диапазон я знаю.
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то используется, но для других целей?

Гарантии нет, это вопрос проектирования. Если ошибка выдается наружу и не перехватывается, вопрос числа - десятый. Если ты в своей процедуре (серверной или клиентской) обрабатываешь исключение, ты должен просмотреть все вызываемые процедуры...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
05.10.2018, 06:12
    #39713306
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Как запретить для определенной схемы удалять любую таблицу даже если эта таблица находится в этой же схеме?
...
Рейтинг: 0 / 0
05.10.2018, 07:40
    #39713314
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
SAS2014Как запретить для определенной схемы удалять любую таблицу даже если эта таблица находится в этой же схеме?
Код: plsql
1.
revoke create session
...
Рейтинг: 0 / 0
05.10.2018, 07:56
    #39713317
Alexander_Ttl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
SAS2014, разместить все таблицы в другой схеме и пользоваться синонимами
...
Рейтинг: 0 / 0
05.10.2018, 08:01
    #39713319
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Alexander_TtlSAS2014, разместить все таблицы в другой схеме и пользоваться синонимами
не вариант
...
Рейтинг: 0 / 0
05.10.2018, 08:10
    #39713320
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
база производственная информация привязана к схеме и таблицы
...
Рейтинг: 0 / 0
05.10.2018, 08:20
    #39713321
MirnyiAtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на удаление
Создать системный триггер на drop table?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрет на удаление / 25 сообщений из 42, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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