powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрет на удаление
42 сообщений из 42, показаны все 2 страниц
Запрет на удаление
    #34977702
sadgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый,

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

Каким образом это можно сделать?
...
Рейтинг: 0 / 0
Запрет на удаление
    #34977706
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая переменная user ...
...
Рейтинг: 0 / 0
Запрет на удаление
    #34977707
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raise вставить
...
Рейтинг: 0 / 0
Запрет на удаление
    #34977717
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jannny: Все правильно, нам надоело отвечать одинаково и мы теперь
отвечаем "пополам"
...
Рейтинг: 0 / 0
Запрет на удаление
    #34977739
sadgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно пример?
...
Рейтинг: 0 / 0
Запрет на удаление
    #34977752
ant74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А grant на delete чужому пользователю не давать слишком просто?
...
Рейтинг: 0 / 0
Запрет на удаление
    #34977763
sadgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача стоит именно сделать это через триггеры
...
Рейтинг: 0 / 0
Запрет на удаление
    #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
Запрет на удаление
    #34977834
sadgin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо :)
...
Рейтинг: 0 / 0
Запрет на удаление
    #34978676
Фотография 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
Запрет на удаление
    #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
Запрет на удаление
    #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
Запрет на удаление
    #35065028
alexia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в в тему:
Код: plaintext
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?
...
Рейтинг: 0 / 0
Запрет на удаление
    #35065036
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё правильнее сравнивать не со строкой (которая в случае с именем пользователя должна быть в апперкейсе) а с овнером таблицы имхо
...
Рейтинг: 0 / 0
Запрет на удаление
    #35065045
Фотография Madness
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexiaВопрос в в тему:
Код: plaintext
  raise_application_error(<-число>, <сообщение>)
Каким образом подбирается значение для <число>? От фонаря или правило какое-то есть?А в доку глянуть? Defining Your Own Error Messages
...
Рейтинг: 0 / 0
Запрет на удаление
    #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
Запрет на удаление
    #35065066
alexia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про диапазон я знаю.
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то используется, но для других целей?
...
Рейтинг: 0 / 0
Запрет на удаление
    #35065075
alexia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибся немного:
alexia
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то не используется для других целей?
...
Рейтинг: 0 / 0
Запрет на удаление
    #35065085
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexiaПро диапазон я знаю.
Хорошо, вот пример: допустим, выбрал я число -20100. Где гарантия того, что это число уже где-то используется, но для других целей?

Гарантии нет, это вопрос проектирования. Если ошибка выдается наружу и не перехватывается, вопрос числа - десятый. Если ты в своей процедуре (серверной или клиентской) обрабатываешь исключение, ты должен просмотреть все вызываемые процедуры...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запрет на удаление
    #39713306
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как запретить для определенной схемы удалять любую таблицу даже если эта таблица находится в этой же схеме?
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713314
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014Как запретить для определенной схемы удалять любую таблицу даже если эта таблица находится в этой же схеме?
Код: plsql
1.
revoke create session
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713317
Alexander_Ttl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014, разместить все таблицы в другой схеме и пользоваться синонимами
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713319
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_TtlSAS2014, разместить все таблицы в другой схеме и пользоваться синонимами
не вариант
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713320
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
база производственная информация привязана к схеме и таблицы
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713321
MirnyiAtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создать системный триггер на drop table?
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713324
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MirnyiAtomСоздать системный триггер на drop table?Если в базе работают вредители, обойдут без проблем.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713443
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014база производственная информация привязана к схеме и таблицы
И все ходят под владельцем схемы, явно знают его пароль и имеют возможность выполнить произвольный запрос в БД?

Ах как вы себе заботливо грабли разложили-то! А вот и дробовичок для выстрела в свою ногу рядышком лежит.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713475
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

для создания "системного триггера" не нужны особые права?

.....
stax
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713481
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

-2- уже ответил. Если есть желание навредить, то и это обойдут.
Подойдёт в качестве защиты от дурака-разработчика, выдавшего объектные права в доступные рядовому пользователю.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713489
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

я б не смог обойти

.....
stax
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713602
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-MirnyiAtomСоздать системный триггер на drop table?Если в базе работают вредители, обойдут без проблем.В общем случае? Как?
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713658
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop-2-Если в базе работают вредители, обойдут без проблем.В общем случае? Как?Если триггер на схема.drop, именно дропнуть не получится. Получить схожий результат можно через rename, alterом удалить поля и накрыть truncateом.
Может быть получится создать партиционную таблицу, сделать exchange и дроп партиции.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713683
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

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

SY.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713688
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYОригинальный (ооочень древний) вопрос был про запрет удаления данных таблицы а вот сегодняшний про запрет удаления самих таблиц. Конечно, с точки зрения бизнеса те же яйца, но с технической...Виной тому, в немалой степени, косноязычие продолжателя:
SAS2014удалять таблицу
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713700
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Может быть получится создать партиционную таблицу, сделать exchange и дроп партиции.Ну да, 12.2 вроде позволяет ковертировать в секционированную
Код: plaintext
alter table ... modify partition by ... online
Так что, наверное, можно подропать секции и даже транкейт не пригодится.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39713717
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopТак что, наверное, можно подропать секции и даже транкейт не пригодится.

Последнюю сигарету не стреляют

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> select partition_name from user_tab_partitions where table_name = 'LIST_PART_TAB';

PARTITION_NAME
---------------------------------------------------------------------------------------
PART_AA

SQL> alter table list_part_tab drop partition part_aa;
alter table list_part_tab drop partition part_aa
                                         *
ERROR at line 1:
ORA-14083: cannot drop the only partition of a partitioned table


SQL> 



SY.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39714226
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
столько слов столько много, а толку нет
и ни один из типа "экспертов" так и не написал команду, которую я просил.

А просил я просто, мне надо запретить определенному пользователю удалять таблицы

пробовал не работает
revoke drop any table from test
...
Рейтинг: 0 / 0
Запрет на удаление
    #39714228
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем любые таблицы
...
Рейтинг: 0 / 0
Запрет на удаление
    #39714237
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014столько слов столько много, а толку нет
и ни один из типа "экспертов" так и не написал команду, которую я просил.

А просил я просто, мне надо запретить определенному пользователю удалять таблицыЧтобы дать команду кому-то, важны не конкретные слова, а командный голос.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39714283
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014и ни один из типа "экспертов" так и не написал команду, которую я просил.
Берёшь доку и внимательно читаешь про права владельца схемы.

Решение тебе уже дали - синонимов вполне хватит. Но, т.к. думать ты не желаешь, и продолжаешь ждать чуда в виде волшебной заплатки для кривой архитектуры, то окромя стёба дать тебе практически нечего.
Вариант с системным триггером, защищающим от кривых рук разработчика, тоже уже предложили.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39714541
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014причем любые таблицы

Чужие таблицы удалить можно только имея DROP ANY TABLE (хаки не обсуждаем). Свою таблицу мoжно грохнуть всегда. Поэтому таблицы которые юзер не должен грохать должны быть чужими таблицами. Можно конечно создать триггер (при уcловии юзер не имеет ADMINISTER DATABASE TRIGGER) или, например, создать дочернюю таблицу в другой схеме если таблицы которые юзер не должен грохать имеют PK/UK но все это плохая архитектура.

SY.
...
Рейтинг: 0 / 0
Запрет на удаление
    #39714717
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYSAS2014причем любые таблицы

Чужие таблицы удалить можно только имея DROP ANY TABLE (хаки не обсуждаем). Свою таблицу мoжно грохнуть всегда. Поэтому таблицы которые юзер не должен грохать должны быть чужими таблицами. Можно конечно создать триггер (при уcловии юзер не имеет ADMINISTER DATABASE TRIGGER) или, например, создать дочернюю таблицу в другой схеме если таблицы которые юзер не должен грохать имеют PK/UK но все это плохая архитектура.

SY.

значит как бы не замарачиватся то в своей схеме юзер может удалить все и запретить ему нельзя, кроме как писать pl\sql код
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрет на удаление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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