volon
Дата: 18.03.2011 09:57:37
Доброго времени суток.
Сразу скажу - я начинающий пользователь-админ оракла.
Допустим, есть таблица tab1 (id, name1,name2,admin). Также есть табица tab2 (id,admin_name,name_session).
Создал вьюшку, в которой пользователь может просматривать только те строки, в которых его Фамилия стоит в столбце admin, то есть: select * from tab1 where (select admin_name from tab2 where upper(name_session)=SYS_CONTEXT('userenv', 'SESSION_USER')).
Вопрос: как лучше реализовать следующую задача - пользователь, может удалить данные из tab1 только тогда, когда его Фамилия совпадает со значением в поле admin.
Пробовал так: создал триггер на after delete tab1, в котором прописал условие - если имя admin_name не совпадает с :OLD.admin , тогда занести OLD данные обратно в таблицу. Но логика не сработала - таблица всё ещё заблокирована.
Также есть вариант с промежуточной таблицей, но не хочется плодить их.
Есть ли какое-то ещё решение? Например, прописать в триггере на before tab1 - если admin_name не совпадает с admin, тогда не выполнять удаление.
volon
Дата: 18.03.2011 12:03:02
Всем спасибо, кроме Elic. Буду разбираться)))
З.Ы. Elic, я теперь понимаю, откуда такое количество сообщений на форуме от Вас......