[Qgis-developer] PostGIS edition and foreign key
Bernhard Ströbl
bernhard.stroebl at jena.de
Wed Mar 4 02:42:42 PST 2015
Hi,
well, I tested and it is as you assumed: QGIS deletes both datasets and
then issues an INSERT containing the new dataset. Therefore your foreign
key constraint throws the error. I see two workarounds:
1) as proposed before: change the foreign key behaviour. If that is not
possible
2) triggers might help you; possible outline:
a) preparation: add a field to operations and name it e.g. "was_parcel"
b) trigger 1, before delete:
update operations set was_parcel = parcel_id, set parcel_id = NULL
WHERE parcel_id = OLD.id (assuming parcel_id is the field with the
foreign key constraint)
c) trigger 2, after insert:
update operations set parcel_id = was_parcel, set parcel = NULL WHERE
parcel = NEW.id
Bernhard
Am 04.03.2015 10:36, schrieb Thibaut Gheysen:
> Hi,
>
> I do the merge interactively by selecting the 2 parcels and clicking on
> the button "merge selected features" from the advanced digitizing
> toolbar. On the "merge features attributes" window, I select the
> attributes of the parcel A as attributes of the new/merged parcel. Like
> that the new/merged parcel as the same primary key than the past parcel A.
>
> Regarding the possibility to create triggers to clean the merge, I have
> to think about it but seems a little bit complex given the number of
> tables linked to parcel table (not only operation one) and also the fact
> that during an editing session we can make multiple merge on the same time.
>
> Regarding the type of foreign key, I have well "ON DELETE NO ACTION".
> Defining the foreign key to "ON DELETE CASCADE" or "ON DELETE SET NULL"
> is unfortunately not possible.
>
> Best regards,
> Thibaut.
>
>
>
> 2015-03-03 12:10 GMT+01:00 Bernhard Ströbl <bernhard.stroebl at jena.de
> <mailto:bernhard.stroebl at jena.de>>:
>
> Hi,
>
> the question is how you define your foreign key [1], namely what you
> put for "ON DELETE" (you have either NO ACTION or RESTRICT, which
> throw the error you receive) If you set ON DELETE CASCADE the
> operation would be deleted, too, probably not what you want. Maybe
> you should set ON DELETE SET NULL (make sure that the field can be
> NULL!). Afterwards you reconnect the operation and the new parcel.
>
> Bernhard
>
>
> [1]
> http://www.postgresql.org/__docs/current/static/ddl-__constraints.html#DDL-__CONSTRAINTS-FK
> <http://www.postgresql.org/docs/current/static/ddl-constraints.html#DDL-CONSTRAINTS-FK>
>
> Am 03.03.2015 11:14, schrieb Thibaut Gheysen:
>
> Hi,
>
> I would like to have your opinion in order to simplify as much as
> possible our current workflow.
>
> We have a table parcel and a table operation. The table operation
> include a foreign key to the table parcel. We have 2 parcels (A
> and B)
> but only parcel A has operations link on it. I would like to
> merge the 2
> parcels by keeping the attributes of the parcel A. The merge is
> doing
> properly but impossible to save the edit (Provider errors:
> PostGIS error
> while deleting feature: ERROR: update or delete table "parcel"
> violates
> foreign key constraint"fk_parcel" on table "operation"). I guess
> this is
> due to the fact the Qgis first delete the 2 parcels (A and B) before
> creating a new one (merged one).
> This behaviour oblige us to export the table parcel into a
> shapefile and
> make the modifications on it. Once done, we import the shapefile
> into
> PostGIS and update the parcel geometry base on it.
>
> Is there any chance to find an easier workflow, without developing a
> plug-in ?
>
> Thank for your help.
>
> Best regards,
> Thibaut.
>
>
>
>
>
>
>
> _________________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> <mailto:Qgis-developer at lists.osgeo.org>
> http://lists.osgeo.org/__mailman/listinfo/qgis-__developer
> <http://lists.osgeo.org/mailman/listinfo/qgis-developer>
>
>
> __________ Information from ESET Mail Security, version of virus
> signature database 11260 (20150303) __________
>
> The message was checked by ESET Mail Security.
> http://www.eset.com
>
>
>
>
> __________ Information from ESET Mail Security, version of virus
> signature database 11260 (20150303) __________
>
> The message was checked by ESET Mail Security.
> http://www.eset.com
>
>
>
> _________________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org <mailto:Qgis-developer at lists.osgeo.org>
> http://lists.osgeo.org/__mailman/listinfo/qgis-__developer
> <http://lists.osgeo.org/mailman/listinfo/qgis-developer>
>
>
>
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>
> __________ Information from ESET Mail Security, version of virus signature database 11265 (20150304) __________
>
> The message was checked by ESET Mail Security.
> http://www.eset.com
>
__________ Information from ESET Mail Security, version of virus signature database 11266 (20150304) __________
The message was checked by ESET Mail Security.
http://www.eset.com
More information about the Qgis-developer
mailing list