public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete=null, $update=null) { throw new CDbException(Yii::t('yii', 'Adding a foreign key constraint to an existing table is not supported by SQLite.')); }
Создает SQL-запрос для добавления ограничения внешнего ключа в существующую таблицу. Поскольку SQLite не поддерживает добавление внешнего ключа в существующую таблицу, вызов этого метода вызовет исключение.
addPrimaryKey() метод (доступно начиная с v1.1.13)
public string addPrimaryKey(string $name, string $table, string|array $columns)
$name
строка
имя ограничения первичного ключа.
$table
строка
таблица, к которой будет добавлено ограничение первичного ключа.
$columns
строка|массив
строка со значениями столбцов, разделенных запятыми, или массив столбцов, из которых будет состоять первичный ключ.
{return}
строка
SQL-запрос для добавления ограничения первичного ключа в существующую таблицу.
public function addPrimaryKey($name,$table,$columns) { throw new CDbException(Yii::t('yii', 'Adding a primary key after table has been created is not supported by SQLite.')); }
Создает SQL-запрос для добавления ограничения первичного ключа в существующую таблицу. Поскольку SQLite не поддерживает добавление первичного ключа в существующую таблицу, вызов этого метода вызовет исключение.
alterColumn() метод (доступно начиная с v1.1.6)
public string alterColumn(string $table, string $column, string $type)
$table
строка
таблица, столбец которой нужно изменить. Имя таблицы будет должным образом заключено в кавычки методом.
$column
строка
имя столбца, который нужно изменить. Имя будет должным образом заключено в кавычки методом.
$type
строка
новый тип столбца. Метод getColumnType будет вызван для преобразования абстрактного типа столбца (если есть) в физический. Все, что не распознается как абстрактный тип, будет сохранено в сгенерированном SQL. Например, 'строка' будет преобразовано в 'varchar(255)', а 'строка не null' — в 'varchar(255) не null'.
public function alterColumn($table, $column, $type) { throw new CDbException(Yii::t('yii', 'Altering a DB column is not supported by SQLite.')); }
Создает SQL-запрос для изменения определения столбца. Поскольку SQLite не поддерживает изменение столбцов базы данных, вызов этого метода вызовет исключение.
checkIntegrity() метод (доступно начиная с v1.1)
public void checkIntegrity(boolean $check=true, string $schema='')
$check
логическое
включить или отключить проверку целостности.
$schema
строка
схема таблиц. По умолчанию пустая строка, что означает текущую или стандартную схему.
public function checkIntegrity($check=true,$schema='') { $this->getDbConnection()->createCommand('PRAGMA foreign_keys='.(int)$check)->execute(); }
Включает или отключает проверку целостности. Обратите внимание, что до версии 1.1.14 этот метод ничего не делал. С версии 1.1.14 он меняет состояние проверки целостности, как ожидается.
protected function createColumn($column) { $c=new CSqliteColumnSchema; $c->name=$column['name']; $c->rawName=$this->quoteColumnName($c->name); $c->allowNull=!$column['notnull']; $c->isPrimaryKey=$column['pk']!=0; $c->isForeignKey=false; $c->comment=null; // SQLite does not support column comments at all
public function dropColumn($table, $column) { throw new CDbException(Yii::t('yii', 'Dropping DB column is not supported by SQLite.')); }
Создает SQL-запрос для удаления столбца базы данных. Поскольку SQLite не поддерживает удаление столбца базы данных, вызов этого метода вызовет исключение.
dropForeignKey() метод (доступно начиная с v1.1.6)
public string dropForeignKey(string $name, string $table)
$name
строка
имя ограничения внешнего ключа, которое нужно удалить. Имя будет должным образом заключено в кавычки методом.
$table
строка
таблица, из которой нужно удалить внешний ключ. Имя будет должным образом заключено в кавычки методом.
{return}
строка
SQL-запрос для удаления ограничения внешнего ключа.
public function dropForeignKey($name, $table) { throw new CDbException(Yii::t('yii', 'Dropping a foreign key constraint is not supported by SQLite.')); }
Строит SQL-запрос для удаления ограничения внешнего ключа. Поскольку SQLite не поддерживает удаление ограничений внешних ключей, вызов этого метода выбросит исключение.
dropIndex() метод (доступен с версии v1.1.6)
public string dropIndex(string $name, string $table)
$name
строка
имя индекса, который нужно удалить. Метод корректно добавит кавычки к имени.
$table
строка
таблица, из которой нужно удалить индекс. Метод корректно добавит кавычки к имени.
public function dropPrimaryKey($name,$table) { throw new CDbException(Yii::t('yii', 'Removing a primary key after table has been created is not supported by SQLite.'));
}
Строит SQL-запрос для удаления ограничения первичного ключа из существующей таблицы. Поскольку SQLite не поддерживает удаление первичного ключа из существующей таблицы, этот метод выбросит исключение.
protected function findTableNames($schema='') { $sql="SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence'"; return $this->getDbConnection()->createCommand($sql)->queryColumn(); }
схема таблицы, последовательность первичного ключа которой будет сброшена
$value
целое число|null
значение для первичного ключа следующей новой вставленной строки. Если это не задано, первичный ключ следующей новой строки будет иметь максимальное значение первичного ключа плюс один (т.е. обрезка последовательности).
public function resetSequence($table,$value=null) { if($table->sequenceName===null) return; if($value!==null) $value=(int)($value)-1; else $value=(int)$this->getDbConnection() ->createCommand("SELECT MAX(`{$table->primaryKey}`) FROM {$table->rawName}") ->queryScalar(); try { // it's possible that 'sqlite_sequence' does not exist $this->getDbConnection() ->createCommand("UPDATE sqlite_sequence SET seq='$value' WHERE name='{$table->name}'") ->execute(); } catch(Exception $e) { } }
Сбрасывает значение последовательности первичного ключа таблицы. Последовательность будет сброшена таким образом, что первичный ключ следующей новой вставленной строки будет иметь указанное значение или максимальное значение первичного ключа плюс один (т.е. обрезка последовательности).
truncateTable() метод (доступен с версии v1.1.6)
public string truncateTable(string $table)
$table
строка
таблица, которую нужно обнулить. Метод корректно добавит кавычки к имени.