powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Включение одной роли в другую
5 сообщений из 5, страница 1 из 1
Включение одной роли в другую
    #40046581
mariem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Мною создано две роли: групповая customer и персонализированная client_name_surname
Необходимо включить роль клиента в роль customer
Явно это делается следующим образом
Код: sql
1.
GRANT customer TO client_name_surname



Но задача состоит в том, что мне неизвестно имя роли клиента и я хочу передать в такой запрос последнюю добавленную роль на место client_name_surname

выглядело бы это так:
Код: sql
1.
GRANT customer TO (SELECT rolname FROM pg_roles WHERE oid=(SELECT max(oid) FROM pg_roles)); 



такой вариант к сожалению не работает, посоветуйте пожалуйста способ решения
...
Рейтинг: 0 / 0
Включение одной роли в другую
    #40046586
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mariem,

Чей то мне кажется что вы где то нашли SQL INJECTION и пытаетесь его для управления ролями и правами заабуюзить.
Объясните как у вас получилось что " мне неизвестно имя роли клиента ".

Эм если штатные методы не работают - значит вы делаете что то не то.
И надо о постановке задачи задуматься.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Включение одной роли в другую
    #40046607
mariem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

есть таблица с клиентами, мне нужно для рандомного клиента создать персонализированную роль.
создала для этого функцию:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE OR REPLACE FUNCTION create_role()
RETURNS TABLE (f TEXT, l TEXT)
AS
$$ 
BEGIN 
DROP TABLE IF EXISTS tmpCustomer;			
CREATE TEMPORARY TABLE IF NOT EXISTS tmpCustomer (c_id int, f_name TEXT, l_name TEXT);
INSERT INTO tmpCustomer
SELECT cid, fname, lname
FROM 
	(SELECT DISTINCT c.customer_id AS cid, c.first_name AS fname, c.last_name AS lname
	FROM customer c 
	INNER JOIN rental r ON c.customer_id=r.customer_id 
	INNER JOIN payment p ON c.customer_id=p.customer_id) AS subq
ORDER BY random()
LIMIT 1;

EXECUTE 'CREATE ROLE client_'||(SELECT f_name FROM tmpCustomer)||'_'||(SELECT l_name FROM tmpCustomer);

RAISE NOTICE 'Role was created for customer % %',(SELECT f_name FROM tmpCustomer), (SELECT l_name FROM tmpCustomer);
RETURN query SELECT f_name, l_name FROM tmpCustomer;
END;
$$ LANGUAGE plpgsql;

SELECT * FROM create_role();



возникла мыль просто запихнуть в функцию включение ролей
Код: sql
1.
EXECUTE 'GRANT customer TO client_'||(SELECT f_name FROM tmpCustomer)||'_'||(SELECT l_name FROM tmpCustomer);
...
Рейтинг: 0 / 0
Включение одной роли в другую
    #40046699
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mariem
есть таблица с клиентами, мне нужно для рандомного клиента создать персонализированную роль.

Нормальные люди так не делают. Рандомному клиенту выдаётся заранее определённая роль "для рандомных клиентов". Или вообще никакая.
...
Рейтинг: 0 / 0
Включение одной роли в другую
    #40047111
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
mariem
есть таблица с клиентами, мне нужно для рандомного клиента создать персонализированную роль.

Нормальные люди так не делают. Рандомному клиенту выдаётся заранее определённая роль "для рандомных клиентов". Или вообще никакая.


Мне тоже кажется что
Роли они должны определяться заранее
и смысла роли для каждого клиента я не вижу
(и это даже НЕ приментильно к постгресу а вообще
имхо к любой БД)

хотя возможно не достаточно информации
зачем это делается ???
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Включение одной роли в другую
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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