diff --git a/lib/classes/databox/field.php b/lib/classes/databox/field.php
index 048dbee215..bba7f1b6c4 100644
--- a/lib/classes/databox/field.php
+++ b/lib/classes/databox/field.php
@@ -522,11 +522,22 @@ class databox_field implements cache_cacheableInterface
public function set_dces_element(databox_Field_DCESAbstract $DCES_element = null)
{
+ $connbas = $this->get_connection();
+
+ if (null !== $DCES_element) {
+ $sql = 'UPDATE metadatas_structure
+ SET dces_element = null WHERE dces_element = :dces_element';
+
+ $stmt = $connbas->prepare($sql);
+ $stmt->execute(array(
+ ':dces_element' => $DCES_element->get_label()
+ ));
+ $stmt->closeCursor();
+ }
+
$sql = 'UPDATE metadatas_structure
SET dces_element = :dces_element WHERE id = :id';
- $connbas = $this->get_connection();
-
$stmt = $connbas->prepare($sql);
$stmt->execute(array(
':dces_element' => $DCES_element ? $DCES_element->get_label() : null
diff --git a/lib/conf.d/bases_structure.xml b/lib/conf.d/bases_structure.xml
index d4773a7717..071b5b7098 100644
--- a/lib/conf.d/bases_structure.xml
+++ b/lib/conf.d/bases_structure.xml
@@ -4720,6 +4720,13 @@
name
+
+ dces_element
+ UNIQUE
+
+ dces_element
+
+
indexable
INDEX