Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425

CREATE RULES

23.08.2022, 19:41. Показов 452. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно ли как-то создать правило, чтобы вместе с одним селектом выполнялись перед ним другие?
SQL
1
2
3
4
CREATE RULE "dblink_insert" AS
    ON SELECT TO public.dbaccess
    DO ALSO
        SELECT dblink_connect_u('conn1', 'dbname=Learn');
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2022, 19:41
Ответы с готовыми решениями:

CREATE TYPE
подскажите пожалуйста, как создать пользовательский тип... знаю, что создается с помощью CREATE TYPE, но все параметры не знаю... ...

CREATE VIEW, расположение полей
Здравствуйте. Смотрите на поле ava => create or replace view members_view as select m.id, name, email, ava, r.rating, nq, na from...

Результат выполнения CREATE TABLE
Добрый день. Возникла необходимость динамически создавать таблицы в БД. Пишу на ASP.NET, используя NpgsqlConnection. Вопрос...

4
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
23.08.2022, 23:14
Правила ON SELECT выполняются после выполнения самого запроса. Поэтому такой изврат не пройдет.

Вообще RULE опасный механизм. Можно очень легко наворотить сложную логику, в которой потом не возможно будет разобраться, и все будет работать непонятно как. Я бы избегал нагромождения RULE, да еще с такими странными задумками.

Что мешает dblink_connect вызывать в какой-то хранимой функции, потом выполнять нужный запрос с этим коннектом и возвращать из функции вызывающему нужный набор данных??
0
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
24.08.2022, 18:32  [ТС]
Хотел так накостылить к плачевному механизму dblink. Но, я нашёл решение куда лучше, ахах.
Поскольку у меня стоит метод аутенфикации trust, а на md5 мне категорически нельзя переходить - из-за этого ругалось на dblink_connect, он просто не мог аутенфицировать обычного пользователя, и работал только под суперпользователем. Пришлось извратиться, и я создал функцию с SECURITY DEFINER под суперпользователем, в которой как раз выполняется этот плачевный запрос и возвращает TABLE И QUERY. Таким образом пользователи могут спокойно использовать нужный селект, который обращается к удалённым БД)))
0
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
24.08.2022, 20:45
Что-то ничего не понял... Вы пытались какую проблему решить?? Безопасность доступа кого-то к каким-то данным?? Или проблему доступа к данным из одной базы в другу как бы удаленно??
(вопросы риторические, ответа не требуют )) если вы довольны Вашим решение, то и ладно - обсуждать особо нечего)
0
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
24.08.2022, 21:13  [ТС]
Смотрите.. Давайте по-полочкам.
1. Я использовал dblink для того, чтобы создать VIEW, в которую включаются одинаковые таблицы, но они находятся на многих базах данных на одном сервере.
2. Необходимо было настроить dblink так, чтобы его мог использовать не только суперпользователь. Поскольку в конфиге аутентификация указана не md5, а trust - не хотела работать функции db_connect и db_connect_u у обычных пользователей. Менять тип аутентификации я не могу, ибо обязательно нужен trust.
3. Чтобы это обойти - я создал функцию(CREATE FUNCTION) от лица суперпользователя postgres. Она возвращает таблицу с данными из VIEW, при этом я указал в этой функции в самом низу SECURITY DEFINER, что позволило делать селект и получать данные обычным пользователям.

Я правильно поступил, или можно было сделать как-то иначе?

Добавлено через 2 минуты
З.Ы. По дефолту, у SUPERUSER не запрашивается пароль при запросах dblink, а у пользователей - обязательно просит.
trust - тип аутентификации, который при входе не запрашивает пароль. И из-за этого пользователи не могли совершить коннект при запросе dblink.

Добавлено через 2 минуты
З.Ы.З.Ы. Не работали функции dblink_connect и dblink_connect_u даже при выдаче определённой группе право на EXECUTE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2022, 21:13
Помогаю со студенческими работами здесь

Create cross-ref tables
Подскажите пожалуйста, как создать две таблицы, каждая из которых ссылается на другую? CREATE TABLE IF NOT EXISTS department ( ...

CREATE VIEW, ошибка с псевдотипом
Приветствую. Возникла такая проблема, при создании данного представления возвращает ошибку "колонка row имеет псевдотип record"...

Ошибка при создании процедуры, CREATE PROCEDURE
Работаю над созданием процедуры в PostgreSQL. CREATE PROCEDURE p1(name character varying(100), adr character varying(100),ind...

Ошибка при создании процедуры, CREATE PROCEDURE
INSERT INTO "Принадлежность вагона к поезду" ("Номер вагона","Номер поезда","Вокзал","Поезда", "Вагоны")VALUES ...

CREATE LOGIN
Нужно написать команду CREATE LOGIN на создание в этом соединении нового пользователя с именем NewUser, включив его в роль dbcreator. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru