Всем добрый день.
Возникла необходимость создания таблицы, в которой одна колонка играла бы роль первичного ключа и заполнялась автоматически.
Немного погуглив, я наткнулся на решение с использованием SEQUENCE
CREATE SEQUENCE testseq MINVALUE 1 MAXVALUE 5 CYCLE;После создаю таблицу
CREATE TABLE foo ( id integer NOT NULL DEFAULT NEXTVAL('testseq'), name text, PRIMARY KEY (id) );
Добавляю в нее значения
INSERT INTO foo (name) VALUES('A'); INSERT INTO foo (name) VALUES('B'); INSERT INTO foo (name) VALUES('C');
Граждане, товарищи, подскажите, пожалуйста, как решить такую задачку (вроде и не сложную, если возможную):
есть запрос вида
SELECT t.oid, format_type(t.oid, -1) AS basetype FROM pg_proc p INNER JOIN pg_type t ON t.oid = p.prorettype OR t.oid = ANY (p.proargtypes) OR t.oid = ANY (p.proallargtypes)
Задача в том, что бы он заработал в версии 7.3, т.е. где нет ANY и соответственно не обойдешься просто IN и EXISTS в виду типа oidvector (в другом примере тип int2vector).
Идеи?
Работаю с постгрес из с++
Для очистки памяти от результатов запроса использую PQclear():
Есть два запроса в цикле
PGresult* res_1; PGresult* res_2; zapr="Select * fromе table1; res_1=PQexec(p_pgconn_my_db, zapr.c_str()); for(i=0; i<PQntuples(res_1); i++){ zapr="SELECT * FROMе table2 WHERE pole1=PQgetvalue(res_1, 0, 0); res_2=PQexec(p_pgconn_my_db, zapr.c_str()); PQclear(res_2); } PQclear(res_1);
Уважаемые гуру. научите пож-та. есть база 1с на посгри. во время обновления вылетела 1с 8.
народ предлагает востановить тока через pgadmin след образом.
через PG_ADMIN
1. copy config to '/home/user/config_1.txt в упавшей базе
2. copy config to '/home/user/config_0.txt в базе поднятой из последнего бэкапа
3. delete from config в упавшей базе
4. copy config from '/home/user/config_0.txt в упавшей базе
можно тоже самое сделать тока через консоль ?? без поднятия pgadmin ??
Здравствуйте. Никак не могу понять почему такая разница в скорости выполнения хранимой процедуры. Хотя это в принципе одно и то же.
PostgreSQL 9.1.
В первом варианте выполняется ~50ms
CREATE OR REPLACE FUNCTION get_data(IN source_str varchar(100))
RETURNS TABLE(tag1 varchar(100), tag2 varchar(100), tag3 varchar(100)) AS
$BODY$
BEGIN
RETURN QUERY
select table1.name, table2.name, table3.name
from table1, table2, table3
where table3.id = table2.id_tab3
and table1.id_tab2 = table2.id
and (table1.name ilike 'xyz%')
and (table2.name ilike '%')
Два вопроса относительно pgpool:
1) pgpool реплицирует БД только в синхронном режиме?
2) при пропадании связи с одним из сервером (например отлючаю сеть), мастер-мастер репликация не возобновляет свою работу (если пытался в период отстуствия связи внести изменения БД), пока не выполню следующие действия: остановить pgpool, удалить файл "pgpool_status", запустить pgpool. Если все должно быть гораздо проще - подскажите, пожалуйста, настройки
Добрый день.
В первый раз работаю с постгре после.
есть таблица вида:
id | phone | userId | summ
Нужно выбрать все записи, телефоны которых входят в массив. Грубо говоря: SELECT * from 'table' where 'phone' in array (phone1, phone2, phone2 ...)
И поменять в там же значения phone и userId опять же по массиву значений.
Поскажите плиз как это грамотно сделать.
Возможно ли сделать так?
Написать какой нибудь select запрос(select * from table1;) в файле selectsql и сохранить. И в командной строке указать PostgreSQL9, чтобы загрузил и запустил команду находящиеся в файле /home/selectsql.
Streaming Replication может ли работать в режиме master-master репликации (аналогично Bucardo)?
В документации есть очень полезная опция [ IF NOT EXISTS ]
В жизни pgAdmin на CREATE TABLE IF NOT EXISTS qqq ... ругается
ERROR: syntax error at or near "not"
LINE 1: create table if not exists qqq
Что делать и кто виноват? Как побороть/обойти?