protected function _update()
    {
        //do not allow derived item update
        if (!$this->allowDerivedUpdate()) {
            return false;
        }

        if (!$this->getId()) {
            $exception = oxNew(\OxidEsales\Eshop\Core\Exception\ObjectException::class);
            $exception->setMessage('EXCEPTION_OBJECT_OXIDNOTSET');
            $exception->setObject($this);
            throw $exception;
        }
        $coreTableName = $this->getCoreTableName();

        $idKey = \OxidEsales\Eshop\Core\Registry::getUtils()->getArrFldName($coreTableName . '.oxid');
        $this->$idKey = new Field($this->getId(), Field::T_RAW);
        $database = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();

        $updateQuery = "update {$coreTableName} set " . $this->_getUpdateFields() .
                     " where {$coreTableName}.oxid = " . $database->quote($this->getId());

        $this->beforeUpdate();
        $this->executeDatabaseQuery($updateQuery);

        return true;
    }