Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запретить изменение полей таблицы не из тригера / 5 сообщений из 5, страница 1 из 1
04.12.2007, 17:36
    #34985952
aTz (msk)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить изменение полей таблицы не из тригера
Возник вот такой вопрос внезапно...
Есть две таблицы: главная и второстепенная.
Время от времени при изменении данных в главной таблице по триггеру изменяются некоторые столбцы во второстепенной таблице. И вот вопрос: а как сделать так чтобы эти самые столбцы во второстепенной таблице нельзя было изменять запросами UPDATE напрямую (только из триггера главной таблицы), при этом некоторые другие столбцы из этой же (второстепенной) таблицы изменять такими запросами было бы можно. Есть предложения?
...
Рейтинг: 0 / 0
04.12.2007, 17:38
    #34985956
aTz (msk)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить изменение полей таблицы не из тригера
забыл добавить - для триггеров можно использовать только pl/pgsql
...
Рейтинг: 0 / 0
04.12.2007, 17:41
    #34985966
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить изменение полей таблицы не из тригера
Ну, например сделать запрет на обновление таблицы для пользователей, а обновление делать из функции которую создать как SECURITY DEFINER, а дефайнеру дать такие права.

ЗЫ Теоретизирую
...
Рейтинг: 0 / 0
05.12.2007, 11:18
    #34987373
Запретить изменение полей таблицы не из тригера
Разные права к полям одной таблицы.... по-моему, никак...
Код: plaintext
1.
2.
3.
CREATE TABLE "test"."maintable" (
  "field1" INTEGER,
  "field2" INTEGER
WITH OIDS;
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE "test"."slavetable" (
  "field1" INTEGER,
  "field2" INTEGER,
  "field3" INTEGER,
  "field4" INTEGER
WITH OIDS;
Ну если что-нибудь типа:
Допустим, поля field1,field2 в 'slavetable' обновляются триггером, field3,field4 нужно апдейтить прямо....
Может, ввести третью таблицу
Код: plaintext
1.
2.
3.
CREATE TABLE "test"."slavetable_t" (
  "field3" INTEGER,
  "field4" INTEGER
WITH OIDS;
апдейтить ее, а саму 'slavetable' менять и в этом случае триггером, как Andrey Daeron описал.
...
Рейтинг: 0 / 0
05.12.2007, 12:09
    #34987621
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить изменение полей таблицы не из тригера
самое простое - разбить на 2 подчиненки -
1 - исключительно служебную==триггерную, на которую прав не давать (только триггерной процедуре).
2 - пользовательскую, права дать.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запретить изменение полей таблицы не из тригера / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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