/** * Adds a table constraint * * @param DBConstraint $constraint constraint to add * @throws DuplicationException thrown when another constaint with the same name already added * @return DBTable itself */ function addConstraint(DBConstraint $constraint) { $name = $constraint->getName(); if ($name) { if (isset($this->constraints[$name])) { throw new DuplicationException('constraint', $name); } } else { $name = 'constraint_' . join('_', $constraint->getFields()) . (sizeof($this->constraints) + 1); $constraint->setName($name); } $this->constraints[$name] = $constraint; if ($constraint instanceof DBPrimaryKeyConstraint) { if ($this->pk) { throw new DuplicationException('constraint', $name); } $this->pk = $constraint; } return $this; }