public string alterColumn(string $table, string $column, string $type)
$table
строка
таблица, столбец которой необходимо изменить. Имя таблицы будет корректно обрамлено кавычками методом.
$column
строка
имя столбца, который необходимо изменить. Имя будет корректно обрамлено кавычками методом.
$type
строка
новый тип столбца. Метод getColumnType будет вызван для преобразования абстрактного типа столбца (если таковой имеется) в физический. Всё, что не распознаётся как абстрактный тип, останется в сгенерированном SQL. Например, 'строка' преобразуется в 'varchar(255)', а 'строка не null' станет 'varchar(255) not null'.
protected function createCommandBuilder() { return new COciCommandBuilder($this); }
Создаёт конструктор команд для базы данных. Этот метод может быть переопределён дочерними классами для создания конструктора команд, специфичного для СУБД.
dropIndex() метод (доступно начиная с v1.1.6)
public string dropIndex(string $name, string $table)
$name
строка
имя индекса, который необходимо удалить. Имя будет корректно обрамлено кавычками методом.
$table
строка
таблица, индекс которой необходимо удалить. Имя будет корректно обрамлено кавычками методом.
protected function findColumns($table) { $schemaName=$table->schemaName; $tableName=$table->name;
$sql=<<<EOD SELECT a.column_name, a.data_type || case when data_precision is not null then '(' || a.data_precision || case when a.data_scale > 0 then ',' || a.data_scale else '' end || ')' when data_type = 'DATE' then '' when data_type = 'NUMBER' then '' else '(' || to_char(a.data_length) || ')' end as data_type, a.nullable, a.data_default, ( SELECT D.constraint_type FROM ALL_CONS_COLUMNS C inner join ALL_constraints D on D.OWNER = C.OWNER and D.constraint_name = C.constraint_name WHERE C.OWNER = B.OWNER and C.table_name = B.object_name and C.column_name = A.column_name and D.constraint_type = 'P') as Key, com.comments as column_comment FROM ALL_TAB_COLUMNS A inner join ALL_OBJECTS B ON b.owner = a.owner and ltrim(B.OBJECT_NAME) = ltrim(A.TABLE_NAME) LEFT JOIN all_col_comments com ON (A.owner = com.owner AND A.table_name = com.table_name AND A.column_name = com.column_name) WHERE a.owner = '{$schemaName}' and (b.object_type = 'TABLE' or b.object_type = 'VIEW') and b.object_name = '{$tableName}' ORDER by a.column_id EOD;
protected function findConstraints($table) { $sql=<<<EOD SELECT D.constraint_type as CONSTRAINT_TYPE, C.COLUMN_NAME, C.position, D.r_constraint_name, E.table_name as table_ref, f.column_name as column_ref, C.table_name FROM ALL_CONS_COLUMNS C inner join ALL_constraints D on D.OWNER = C.OWNER and D.constraint_name = C.constraint_name left join ALL_constraints E on E.OWNER = D.r_OWNER and E.constraint_name = D.r_constraint_name left join ALL_cons_columns F on F.OWNER = E.OWNER and F.constraint_name = E.constraint_name and F.position = c.position WHERE C.OWNER = '{$table->schemaName}' and C.table_name = '{$table->name}' and D.constraint_type <> 'P' order by d.constraint_name, c.position EOD; $command=$this->getDbConnection()->createCommand($sql); foreach($command->queryAll() as $row) { if($row['CONSTRAINT_TYPE']==='R') // foreign key { $name = $row["COLUMN_NAME"]; $table->foreignKeys[$name]=array($row["TABLE_REF"], $row["COLUMN_REF"]); if(isset($table->columns[$name])) $table->columns[$name]->isForeignKey=true; }
} }
Собирает данные о столбцах первичных и внешних ключей для заданной таблицы.
findTableNames() метод
protected array findTableNames(string $schema='')
$schema
строка
схема таблиц. По умолчанию пустая строка, что означает текущую или схему по умолчанию. Если не пустая, возвращаемые имена таблиц будут префиксными именем схемы.
protected function findTableNames($schema='') { if($schema==='') { $sql=<<<EOD SELECT table_name, '{$schema}' as table_schema FROM user_tables EOD; $command=$this->getDbConnection()->createCommand($sql); } else { $sql=<<<EOD SELECT object_name as table_name, owner as table_schema FROM all_objects WHERE object_type = 'TABLE' AND owner=:schema EOD; $command=$this->getDbConnection()->createCommand($sql); $command->bindParam(':schema',$schema); }
схема таблицы, последовательность первичного ключа которой будет сброшена
$value
integer|null
значение для первичного ключа следующей новой строки. Если не установлено, первичный ключ следующей новой строки будет иметь максимальное значение первичного ключа плюс один (т.е. обрезка последовательности).
Сбрасывает значение последовательности первичного ключа таблицы. Последовательность будет сброшена таким образом, что первичный ключ следующей новой вставленной строки будет иметь указанное значение или максимальное значение первичного ключа плюс один (т.е. обрезка последовательности).