[Qgis-developer] Concurrent editing- postGIS/Oracle Spatial

Bernhard Ströbl bernhard.stroebl at jena.de
Tue Dec 2 03:11:30 PST 2014


Hi,

no solution but some thoughts. You could store all changes of each user 
into a separate table and create a dedicated view for each user 
combining the changed datasets in his/her user table and those unchanged 
by this user from the original table.
The user table would have a field user_action::char(1) with values i, u 
or d for (INSERT, UPDATE, DELETE)

CREATE VIEW userview AS
SELECT data FROM usertable
WHERE user_action != 'd'
UNION
SELECT data FROM originaltable
WHERE id not in (SELECT DISTINCT id FROM usertable);
--assuming id is the primary key

The user would edit this view and the view would be made editable 
through rules [1].

Once the job is completed the changes can be applied to the original 
table and deleted from the user table (by means of a DB function). You 
would have to make sure that deletes are executed first, then inserts 
and then updates. Maybe a timestamp of the change is useful to have only 
the last update executed for each dataset.

The main problem I see is concurrent editing of the same feature (e.g. 
user A changes feature 1 and in the meanwhile user B deletes it, then 
the application of A's changes has no effect). There used to be a plugin 
by Horst Düster called "PG Version" to handle this but I could not just 
find it.

Hope this helps

Bernhard

[1] http://www.postgresql.org/docs/9.3/static/rules.html

Am 02.12.2014 09:05, schrieb Manoj:
> Hello All,
>
> unable to post from original id, so trying my luck with another.
>
>
> I need a suggestion to implement a workflow in QGIS.
>
> Requirement is that edits are not visible to other user until field work
> is over which means edits for a user is stored in temp table or in the
> same table differentiated by a attribute.
>
>
> So say I have road layer which is visible to all.
>
> Any user work on road layer, their edits are stored in road_temp table.
> Only owner user is allowed to see the new edits. The entry in db is
> having user’s job id to find out.
>
>
> Once he marks the job completion then others can also see.
>
> So how I can make QGIS to show a combined view of two tables based on
> the job opened or just existing +job data  if stored in a same table?
>
> For example-
>
>
> Existing data is – A, B, C, D
>
> User A-  Job1- Created – E, Deleted C
>
> So he his map showing- A,B, D, E
>
> UserB comes- He still sees A, B, C, D.
>
> He created another job- and added F.
> So userB in his map viewing- A,B, C, D, F
>
> User A- marked his job to complete.
>
> Now UserB  in his map should see- A,B, D,E, F
>
> Or which library is rendering the feature by getting from db (postGIS or
> oracle)?
>
>
> Thanks
>
>
>


__________ Information from ESET Mail Security, version of virus signature database 10811 (20141202) __________

The message was checked by ESET Mail Security.
http://www.eset.com




More information about the Qgis-developer mailing list