- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/db/mysqlcommonconnection.php
- Класс: BitrixMainDBMysqlCommonConnection
- Вызов: MysqlCommonConnection::createTable
public function createTable($tableName, $fields, $primary = array(), $autoincrement = array())
{
$sql = 'CREATE TABLE '.$this->getSqlHelper()->quote($tableName).' (';
$sqlFields = array();
foreach ($fields as $columnName => $field)
{
if (!($field instanceof ScalarField))
{
throw new ArgumentException(sprintf(
'Field `%s` should be an EntityScalarField instance', $columnName
));
}
$realColumnName = $field->getColumnName();
$sqlFields[] = $this->getSqlHelper()->quote($realColumnName)
. ' ' . $this->getSqlHelper()->getColumnTypeByField($field)
. ($field->isNullable() ? '' : ' NOT NULL') // null for oracle if is not primary
. (in_array($columnName, $autoincrement, true) ? ' AUTO_INCREMENT' : '')
;
}
$sql .= join(', ', $sqlFields);
if (!empty($primary))
{
foreach ($primary as &$primaryColumn)
{
$realColumnName = $fields[$primaryColumn]->getColumnName();
$primaryColumn = $this->getSqlHelper()->quote($realColumnName);
}
$sql .= ', PRIMARY KEY('.join(', ', $primary).')';
}
$sql .= ')';
if ($this->engine)
{
$sql .= ' Engine='.$this->engine;
}
$this->query($sql);
}