Страница 1 из 1

Re: Работа со слоями в POSTGIS

Добавлено: 16 окт 2013, 06:05
dab
Таблица PostgreSQL, из которой формируется слой Layer, должна иметь первичный ключ (primary key).
Есть такой?

На стороне клиента посмотрите атрибут key в файле проекта с расширением QGS

Код: Выделить всё

<datasource>dbname='testname' host=localhost port=5632 user='user' password='password' sslmode=disable key='guid' table="table" sql=false</datasource>

Re: Работа со слоями в POSTGIS

Добавлено: 16 окт 2013, 07:31
dab
Nariman писал(а):Насколько я понял QGIS загружает слой полностью, а при сохранении в POSTGIS переписывает полностью существующий в базе слой??
Нет. QGIS изменяет таблицу по первичному ключу на уровне строк.
Какой тип у поля gid и как формируется значение этого поля?
Как пользователь добавляет объекты? Если интерактивно, через стандартный интерфейс QGIS, указывает ли пользователь значение поля gid?

Re: Работа со слоями в POSTGIS

Добавлено: 16 окт 2013, 09:43
gamm
dab писал(а):
Nariman писал(а):Насколько я понял QGIS загружает слой полностью, а при сохранении в POSTGIS переписывает полностью существующий в базе слой??
Нет. QGIS изменяет таблицу по первичному ключу на уровне строк.
это вроде не соответствует тому, что происходит у топикастера - добавления не могли пропасть. А там вообще транзакции есть при обновлении слоя? или QGIS в стиле odbc работает (с созданием копии)?

Re: Работа со слоями в POSTGIS

Добавлено: 16 окт 2013, 09:46
dab
Nariman писал(а):User1 добавил 60 объектов. Сохранил слой. В тоже время user2 добавил пару объектов и тоже сохранил. причем несколько позже нежели user1. В итоге изменения внесенный User1 не сохраняются.
0. Какие версии QGIS - PostgreSQL - PostGIS ?
1. После того как user1 добавил 60 объектов и сохранил данные, смотрите таблицу, например, через pgAdmin. Что в значениях поля "gid"? Всё как и должно быть?
2. После того как user2 добавил пару объектов и сохранил данные, смотрите опять таблицу через pgAdmin. 60 записей исчезли? Пара записей добавилась? Что у них в значении поля "gid"?
3. Текущее значение "street_gid_seq" соответствует максимальному значению "gid" в таблице?

PS
В качестве эксперимента, запретите для user2 удаление из таблицы. Посмотрите логи сервера на момент сохранения его "пары объектов".