Thread: Вопрос по доступу к таблице.

Вопрос по доступу к таблице.

From
"vlads"
Date:

Здравствуйте

Возник вопрос при формировании БД

Есть таблица doc – документы и таблица doct – табличная часть

В таблице doc есть поле status – проведен документ или нет и на него налеплен триггер – status_upd()

Так вот, при формировании цикла в триггере:

FOR rdoct IN (SELECT * FROM doct dt WHERE dt.xdoc=NEW.x)

LOOP

 

Выдается ошибка:

ОШИБКА:  нет доступа к отношению doct

 

Подскажите, пожалуйста, где копать и какой экскаватор для этого нужен.

 

Re: [pgsql-ru-general] Вопрос по доступу к таблице.

From
Dmitry Igrishin
Date:


25 апреля 2016 г., 6:10 пользователь vlads <vlads@sibnet.ru> написал:

Здравствуйте

Возник вопрос при формировании БД

Есть таблица doc – документы и таблица doct – табличная часть

В таблице doc есть поле status – проведен документ или нет и на него налеплен триггер – status_upd()

Так вот, при формировании цикла в триггере:

FOR rdoct IN (SELECT * FROM doct dt WHERE dt.xdoc=NEW.x)

LOOP

 

Выдается ошибка:

ОШИБКА:  нет доступа к отношению doct

 

Подскажите, пожалуйста, где копать и какой экскаватор для этого нужен.

Здравствуйте,

Просто привилегии?

dfigrish=> create table doct();
CREATE TABLE
Time: 35,473 ms
dfigrish=> select * from doct;
--
(0 rows)

Time: 0,683 ms
dfigrish=> \timing off
Timing is off.
dfigrish=> drop table doct;
DROP TABLE
dfigrish=> create table doct();
CREATE TABLE
dfigrish=> select * from doct;
--
(0 rows)

dfigrish=> \dp doct
                            Access privileges
 Schema | Name | Type  | Access privileges | Column privileges | Policies 
--------+------+-------+-------------------+-------------------+----------
 public | doct | table |                   |                   | 
(1 row)

dfigrish=> revoke select on doct from dfigrish;
REVOKE
dfigrish=> select * from doct;
ERROR:  permission denied for relation doct
dfigrish=> \dp doct
                                Access privileges
 Schema | Name | Type  |    Access privileges     | Column privileges | Policies 
--------+------+-------+--------------------------+-------------------+----------
 public | doct | table | dfigrish=awdDxt/dfigrish |                   | 
(1 row)

dfigrish=> grant select on doct to dfigrish;
GRANT
dfigrish=> select * from doct;
--
(0 rows)



--
// Dmitry.

2016-04-25 7:38 GMT+02:00 Dmitry Igrishin <dmitigr@gmail.com>:

25 апреля 2016 г., 6:10 пользователь vlads <vlads@sibnet.ru> написал:

Здравствуйте

Возник вопрос при формировании БД

Есть таблица doc – документы и таблица doct – табличная часть

В таблице doc есть поле status – проведен документ или нет и на него налеплен триггер – status_upd()

Так вот, при формировании цикла в триггере:

FOR rdoct IN (SELECT * FROM doct dt WHERE dt.xdoc=NEW.x)

LOOP

 

Выдается ошибка:

ОШИБКА:  нет доступа к отношению doct

 

Подскажите, пожалуйста, где копать и какой экскаватор для этого нужен.

Здравствуйте,

Просто привилегии?

Я тоже так думаю.

А что такое "табличная часть" -- это что-то связанное с наследованием таблиц или нет? 

--
Alex