Добрый день.
есть пара таблиц:
CREATE TABLE users (id serial PRIMARY KEY, name varchar(64)); CREATE TABLE user_devices(id serial, user_id bigint REFERENCES users, device_description text);
Есть необходимость написать функцию, которая проверит, существует ли пользователь по данному идентификатору и вернет список девайсов, принадлежащих пользователю в случае, если он существует.
Кроме таблицы необходимо вернуть код возврата - 0, если все хорошо, 1 - если пользователя не существует.
Задача такая:
Нужно сделать так, что бы редактировать конкретную запись в таблице мог только ее создатель.
Проблема:
Отловить возможность записи нужно без фактической записи. Причем отловить на уровне сервера б/д.
В идеале:
Отловить select for update.
Что есть:
В таблице есть поле в котором содержится имя владельца строки.
Вопрос: Как можно такое исполнить?
Любые варианты?
PS: Написать триггер на сравнение с current_user это понятно. Сделать функцию проверки - это понятно.
В идеале нужно что бы не проходил select for update для этой записи.
Доброго времени суток!
есть запущенная база с большими двумя таблицами, в них постоянно происходит запись.
Сейчас висит два процесса на эти таблицы вот такого вида:
select * from pg_stat_activity;
"autovacuum: VACUUM public.XXX (to prevent wraparound)"
"autovacuum: VACUUM public.XXXX (to prevent wraparound)"
Запись в таблицы остановил, уже несколько дней жду но вакуум не завершается.
Что можно сделать , что посмотреть, на сколько это критично? Долго не могу держать базу в бездействии на самом деле работает 24*7
Пойду заниматься своим делом в другом месте. Всем удачи
Установлены пакеты:
postgresql-client-9.3
postgresql-9.3
postgresql-contrib-9.3
libpq-dev
postgresql-server-dev-9.3
Создаю пользователя:
CREATE ROLE "USER_NAME" LOGIN ENCRYPTED PASSWORD 'USER_PASSWORD' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
ALTER ROLE "USER_NAME" SET lo_compat_privileges='on';
Создаю базу, отдавая привилегии ранее созданному пользователю:
CREATE DATABASE "DATABASE_NAME" WITH OWNER = "USER_NAME" ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE =default LC_CTYPE = default CONNECTION LIMIT = -1;
Задача калькулятор стажа работы.
Вывод данных представление,представление потому что приложение работает только с представлениями.
Есть две таблицы
T1-трудовой стаж
id
idf
p1 -дата начала
р2- дата окончания
Т2 -льготный стаж
id
idf
p1 -дата начала
р2-дата окончания
р3-кофицент
Даты связаны по idf, дат может быть много, дата р2 может быть не заполнена, автоматом надо подставить текущую дату. Для каждой пары дат надо получить стаж и по idf
трудовой стаж
льготный стаж
общий стаж.
Для одного проекта потребовалась довольно специфичная конфигурация из нескольких серверов БД. Суть в следующем. Есть один центральный узел и N региональных узлов. Связи между региональными узлами нет, но все региональные узлы связаны с центральным. Нужно поддерживать все базы в синхронном состоянии. Т.е. при изменении таблицы на одном из региональных узлов эти изменения должны отразиться на центральном узле и на всех остальных региональных (через центр). Аналогично, при изменении данных на центральном сервере они должны быть перенесены на региональные.
Добрый день!
Собственно вопрос: имеется триггерная функция.
Можно ли ее вызвать каким-нибудь способом
типа select (...) или select * from (...).
Или как-то по другому не заставляя сработать триггер?
Да, и при этом накормить ее на входе какой-то записью.... (в NEW и/или OLD).
Цель: - не писать отдельно ту-же функцию принимающую запись как параметр.
Если кто знает где можно прочесть - ткните в документацию или описание.
Доброго времени суток.
Бьюсь над созданием функции для триггеров, которая бы могла реагировать на события вставки новой записи в таблицу и сохранять идентификатор новой записи в другую спец. таблицу в случае, если этот идентификатор больше, чем уже хранящийся в этой спец. таблице.
Но не нашел возможности сказать функции, какое поле яв-ся идентификатором. Лишь нашел возможность указать таблицу...
Спасибо за любую помощь.
Здравствуйте. Имеется таблица pages, в ней столбцы id (PK) и page_name. Есть также другая таблица actions, в ней столбцы id, page_id (является внешним ключом и ссылается на столбец id таблицы pages. Можно ли перед удалением строки из таблицы pages сначала проверять наличие ссылок? Как это сделать?