Вопросы по SQL и другие аспекты работы PostgreSQL

warning: Creating default object from empty value in /var/www/victor/web/pgdocs.ru/data/modules/taxonomy/taxonomy.pages.inc on line 33.
Здесь обсуждаются запросы на SQL в PostgreSQL. Оптимизация запросов, реализация, подходы и т.д.

Просмотр журнала транзакций

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

Есть необходимость фильтровать журнал транзакций на предмет удаления
документов и внесения изменения в строго указанный документ. Как реализовать?
Ограничить права пользователей не могу. Это входит в их легальные полномочия.
Просто нужно контролировать кто и когда.

С уважением!

Поиск элементов массива в поле типа integer[]

Приветствую Уважаемые форумчане !

Помогите с составлением запроса:

Есть таблица:
CREATE TABLE test(id SERIAL PRIMARY KEY , arr integer[]);

есть массив: '{1,5,88,25}'::integer[]

Нужно выбрать все строки из таблицы test,
где любой элемент из заданного массива
совпадает хоть с одним элементом
поля-массива "arr".

PS: я пробовал мудрить с unnest, но у меня
выбиралось только одна строка =(.

--
С уважением

Внешние ключи и связь таблиц

Здравствуйте уважаемые друзья.
Пытаюсь спроетировать БД со сложной древовидной структурой.
Вопрос мне пока сложно сформулировать, четко задачи тоже не понимаю. Надеюсь что с вашей помощью смогу разобраться.
Есть множество таблиц, я приведу только 3 для примера.

**********************1-ая таблица*********************************

CREATE TABLE DATA
(
  id bigserial NOT NULL,
  meta_data integer NOT NULL,
  s_ep_mkd integer,
  CONSTRAINT data_pkey PRIMARY KEY (id ),
  CONSTRAINT external_key1 FOREIGN KEY (meta_data)
      REFERENCES meta_data (id) MATCH SIMPLE

Группировка и сортировка по нескольким полям.

Есть таблица, для хранения сообщений, структура похожая на форум, но это далеко не форум, а минимализм для простых текстовых сообщений:

CREATE TABLE records(id integer PRIMARY KEY, ts DATE DEFAULT NOW(), link_id integer, msg text);
 
INSERT INTO records(id, link_id, msg) VALUES(1, 0, 'Это заметка N1');
INSERT INTO records(id, link_id, msg) VALUES(2, 0, 'Это заметка N2');
INSERT INTO records(id, link_id, msg) VALUES(3, 2, 'Это дополнение к заметке N2');
INSERT INTO records(id, link_id, msg) VALUES(4, 2, 'Это дополнение к заметке N2');

Передача значения переменной в запрос из программы на с++ в базу данных, написанной на Postgresql

Пишу программу на с++, которая обращается к базе данных, созданной в Postgresql.
Хочу, чтобы значение для заполнения некого столбца одной из таблиц задавалось не в самом запросе, а через переменную. Возникает вопрос: как передать значение этой переменной в запрос?

int m;
m=rand()%100;
res = PQexec(conn, "insert into Таблица (Значение) values (&m);");

Как обеспечить нормальный доступ к другой БД кластера (proxy table).

Мне необходимо получить доступ к данным второй БД в кластере. Для этого я пытаюсь использовать дополнение postgres_fdw и CREATE SERVER, CREATE FOREIGN TABLE, но получается следующее:

In DB1:

CREATE TABLE cst
(
jd smallserial NOT NULL,
txt character(16),
CONSTRAINT pk PRIMARY KEY (jd)
)
;
insert into cst (txt) values
("first")
("second")
("third");

In DB2:

CREATE EXTENSION postgres_fdw;

CREATE SERVER ttt

вопрос по работе join

Здравствуйте! есть 2 таблицы table1 и table2, вычисляю временное пересечение путем запроса

SELECT DISTINCT table1.login, table1.timeby, table1.timesell, table1.selection, table2.login, table2.timeby, table2.timesell, table2.selection
FROM table1
LEFT OUTER JOIN table2 ON (table1.timeby<table2.timesell AND table1.timesell>table2.timeby)
ORDER BY table1.timeby, table2.timeby; 

содержание 1 таблицы

login | timeby | timesell | selection |

LA | 2012-11-02 7:20:00 | 2012-11-02 7:30:00
HJ | 2012-11-02 7:40:00 | 2012-11-02 7:46:00

Работа с массивом

Добрый день,вопрос:

ltrim(regexp_matches(tmp,'\s"[[:alpha:]]*\s' )),'"')

нужно удалить символ ,я так понимаю нужно сначало массив вывести в текст,но как это сделать не знаю(( помогите плиз

Проверка запроса на валидность

Добрый день!

Где-то, давно находил функцию postgresql которая проверяет запрос...
т.е. даешь ей как параметр запрос а сама функция возвращает: то ли bool, то ли код исключения (не помню). При этом транзакция не рвется и сам запрос ни на что не влияет.

Уже неделю пытаюсь найти и не получается :( пожалуйста, напомните как ее зовут?

PS: Это системная функция. И я ее находил в мануале.
PSS: A запрос выглядит в результате:
select ФУНКЦИЯ('select * from table1 where......');
как-то так.

Cистемные утилиты

Подскажите пожалуйста, какие есть основные системные утилиты поставляемые с PostreSQL?

Собранный материал

Back to top

(С) Виктор Вислобоков, 2008-2023