getIdentity() as $col => $val) { if (isset($val)) { $where["$col="] = $val; } else { $where["$col IS"] = new QueryExpr("NULL"); } } if (1 != count($rowset = $row->getTable()->find($where, null, 0, 0, "update nowait"))) { throw new \UnexpectedValueException("Failed to select a single row"); } if ($rowset->current()->getData() != $row->getData()) { throw new \UnexpectedValueException("Row has already been modified"); } } }