- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/location/migration/migrate.php
- Класс: BitrixSaleLocationMigrationCUpdaterLocationPro
- Вызов: CUpdaterLocationPro::createTable
protected function createTable($tableName = '', $columns = array(), $constraints = array())
{
if(!mb_strlen($tableName) || !is_array($columns) || empty($columns) || $this->TableExists($tableName))
return false;
global $DB;
$tableName = $DB->ForSql($tableName);
$tableNameUC = mb_strtoupper($tableName);
// queries that should be called after table creation
$afterTableCreate = array();
// column sqls separated by dbtype
$columnsSql = array();
foreach($columns as $colName => $colProps)
if($col = self::prepareFieldSql($colProps, $afterTableCreate))
$columnsSql[$colName] = $col;
// constraint sqls separated by dbtype
$constSql = self::prepareConstraintSql($constraints);
$queries = array();
if($sql = self::prepareCreateTable($tableName, $columnsSql, $constSql, self::DB_TYPE_MYSQL))
$queries[self::DB_TYPE_MYSQL] = $sql;
if($sql = self::prepareCreateTable($tableNameUC, $columnsSql, $constSql, self::DB_TYPE_MSSQL))
$queries[self::DB_TYPE_MSSQL] = $sql;
if($sql = self::prepareCreateTable($tableNameUC, $columnsSql, $constSql, self::DB_TYPE_ORACLE))
$queries[self::DB_TYPE_ORACLE] = $sql;
if(!empty($queries))
$this->Query($queries);
foreach($afterTableCreate as $dbType => $queries)
{
foreach($queries as $query)
{
$this->Query(array(
$dbType => str_replace('%TABLE_NAME%', self::DB_TYPE_MYSQL == $dbType ? $tableName : $tableNameUC, $query)
));
}
}
return true;
}