public function addIndex(Index $index) { if (isset($this->indexes[$index->getName()])) { throw new MalformedSqlException("Index '{$index->getName()}' already defined!"); } $this->indexes[$index->getName()] = $index; if (is_array($this->columnDefinition)) { if ($index->getIsPrimary()) { foreach ($index->getColumns() as $column) { /* @var $column ColumnSpecifier */ if (!isset($this->columnDefinition[$column->getColumn()])) { throw new InvalidArgumentException("Cannot set undefined column '{$column}' as primary key!"); } /* @var $columnDefinition ColumnDefinition */ $columnDefinition = $this->columnDefinition[$column->getColumn()]; $columnDefinition->setIsPrimaryKey(true); } } } }