Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 29 мар 2024 01:32

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: SQL
СообщениеДобавлено: 12 фев 2019 11:29 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
В контекстном меню какой-либо базы в PGAdmin есть пункт Backup. Этот пункт меню для создания резервной копии всей базы.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SQL
СообщениеДобавлено: 08 мар 2019 00:46 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Чи можна прибрати дане повiдомлення (колись його не було). У моєму випадку при роботi з базою для певних користувачiв заборонено змiнювати параметри деяких таблиць (зйомочних точок) за допомогою тригерної функцiї, чи є якiсь iншi варiанти для цього. Дякую.


Вложения:
01.jpg
01.jpg [ 16.81 Кб | Просмотров: 3300 ]

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL
СообщениеДобавлено: 11 мар 2019 11:16 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
Руслан Пархуць писал(а):
Чи можна прибрати дане повiдомлення (колись його не було). У моєму випадку при роботi з базою для певних користувачiв заборонено змiнювати параметри деяких таблиць (зйомочних точок) за допомогою тригерної функцiї, чи є якiсь iншi варiанти для цього. Дякую.

Можливо Ви перекрили наш трігер, на кожен шар (таблицю в БД) створюється три тригера на усі події, фактично ведення лога операцій в таблиці _operations. Доповніть ці трігери.
У випадку бази PostGIS (SQLMode=1) можна окремо для геометрії (вся геометрия в таблиці _geom) окремо для семантики (таблиці Lxxx, де xxx - айді шару) можна надавати різні права користувачам за допомогою Grant wisard у PGAdmin, або SQL-команди GRANT

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SQL
СообщениеДобавлено: 11 мар 2019 21:33 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Dmitry_Zolotar писал(а):
Можливо Ви перекрили наш трігер, на кожен шар (таблицю в БД) створюється три тригера на усі події, фактично ведення лога операцій в таблиці _operations. Доповніть ці трігери.

Це я зрозумiв, але як менi заборонити запис на деякi таблицi (i вiдповiдно до логу, бо запису не буде). Я створюю також трiгер на кожну з таблиць, в якому прописую наступне
Код:
CREATE TRIGGER check_add_reclayer
  BEFORE INSERT OR UPDATE OR DELETE
  ON l11320000
  FOR EACH ROW
  EXECUTE PROCEDURE check_add_reclayer();
ну i сама функцiя обробки
Код:
CREATE OR REPLACE FUNCTION check_add_reclayer()
  RETURNS trigger AS
$BODY$
          BEGIN
                      IF (TG_OP = 'DELETE') THEN
               IF (current_user != OLD.login AND current_user != 'postgres' AND current_user != 'gis_admin') THEN
                     RETURN NULL;
                ELSE
                     RETURN OLD;
                END IF;
               ELSEIF (TG_OP = 'UPDATE') THEN
                 IF (current_user != OLD.login AND current_user != 'postgres' AND current_user != 'gis_admin') THEN
                     RETURN NULL;
                 ELSE --ELSEIF (current_user = 'postgres' OR current_user = 'gis_admin') THEN
                     NEW.login := current_user;
                  NEW.p9000 := current_user;
                         RETURN NEW;
                 END IF;
               ELSEIF (TG_OP = 'INSERT') THEN
                NEW.login := current_user;
         NEW.p9000 := current_user;
                RETURN NEW;
               END IF;
               RETURN NULL;
         END;
      $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION check_add_reclayer() OWNER TO postgres;

чи менi у кодi
Код:
CREATE OR REPLACE FUNCTION l11320000_insert_func()
  RETURNS trigger AS
$BODY$
DECLARE
BEGIN
INSERT INTO _operations(ln, objid, op, uid)
VALUES(
11320000,
new.objectid,
'I'::bpchar,
pg_backend_pid());
RETURN NEW;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION l11320000_insert_func() OWNER TO postgres;
перед INSERT робити перевiрку, i давати (забороняти) дозвiл користувачу на вставку, але що тодi записувати в таблицю _operations? Якщо нiчого не записувати, тодi знову буде вискакувати дана помилка, чи я щось не так розумiю. Дякую.

P.S. Якщо вставити в свою ф-цiю запис до таблицi operations (INSERT INTO _operations(ln, objid, op, uid)) для Insert, Update та Delete i витерти стандартнi тригери для обробки подiй, чи так буде вiрно?

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB