Commit 1f9a4685 by resurtm

MSSQL initial query builder.

parent 90395b5d
...@@ -429,10 +429,11 @@ class QueryBuilder extends \yii\base\Object ...@@ -429,10 +429,11 @@ class QueryBuilder extends \yii\base\Object
* Builds a SQL statement for enabling or disabling integrity check. * Builds a SQL statement for enabling or disabling integrity check.
* @param boolean $check whether to turn on or off the integrity check. * @param boolean $check whether to turn on or off the integrity check.
* @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
* @param string $table the table name. Defaults to empty string, meaning that no table will be changed.
* @return string the SQL statement for checking integrity * @return string the SQL statement for checking integrity
* @throws NotSupportedException if this is not supported by the underlying DBMS * @throws NotSupportedException if this is not supported by the underlying DBMS
*/ */
public function checkIntegrity($check = true, $schema = '') public function checkIntegrity($check = true, $schema = '', $table = '')
{ {
throw new NotSupportedException($this->db->getDriverName() . ' does not support enabling/disabling integrity check.'); throw new NotSupportedException($this->db->getDriverName() . ' does not support enabling/disabling integrity check.');
} }
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
namespace yii\db\mssql; namespace yii\db\mssql;
use yii\base\InvalidParamException;
/** /**
* QueryBuilder is the query builder for MS SQL Server databases (version 2008 and above). * QueryBuilder is the query builder for MS SQL Server databases (version 2008 and above).
* *
...@@ -35,4 +37,45 @@ class QueryBuilder extends \yii\db\QueryBuilder ...@@ -35,4 +37,45 @@ class QueryBuilder extends \yii\db\QueryBuilder
Schema::TYPE_BOOLEAN => 'tinyint(1)', Schema::TYPE_BOOLEAN => 'tinyint(1)',
Schema::TYPE_MONEY => 'decimal(19,4)', Schema::TYPE_MONEY => 'decimal(19,4)',
); );
// public function update($table, $columns, $condition, &$params)
// {
// return '';
// }
// public function delete($table, $condition, &$params)
// {
// return '';
// }
// public function buildLimit($limit, $offset)
// {
// return '';
// }
// public function resetSequence($table, $value = null)
// {
// return '';
// }
/**
* Builds a SQL statement for enabling or disabling integrity check.
* @param boolean $check whether to turn on or off the integrity check.
* @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
* @param string $table the table name. Defaults to empty string, meaning that no table will be changed.
* @return string the SQL statement for checking integrity
* @throws InvalidParamException if the table does not exist or there is no sequence associated with the table.
*/
public function checkIntegrity($check = true, $schema = '', $table = '')
{
if ($schema !== '') {
$table = "{$schema}.{$table}";
}
$table = $this->db->quoteTableName($table);
if ($this->db->getTableSchema($table) === null) {
throw new InvalidParamException("Table not found: $table");
}
$enable = $check ? 'CHECK' : 'NOCHECK';
return "ALTER TABLE {$table} {$enable} CONSTRAINT ALL";
}
} }
...@@ -120,12 +120,13 @@ class QueryBuilder extends \yii\db\QueryBuilder ...@@ -120,12 +120,13 @@ class QueryBuilder extends \yii\db\QueryBuilder
/** /**
* Builds a SQL statement for enabling or disabling integrity check. * Builds a SQL statement for enabling or disabling integrity check.
* @param boolean $check whether to turn on or off the integrity check. * @param boolean $check whether to turn on or off the integrity check.
* @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. * @param string $table the table name. Meaningless for MySQL.
* @param string $schema the schema of the tables. Meaningless for MySQL.
* @return string the SQL statement for checking integrity * @return string the SQL statement for checking integrity
*/ */
public function checkIntegrity($check = true, $schema = '') public function checkIntegrity($check = true, $schema = '', $table = '')
{ {
return 'SET FOREIGN_KEY_CHECKS=' . ($check ? 1 : 0); return 'SET FOREIGN_KEY_CHECKS = ' . ($check ? 1 : 0);
} }
/** /**
......
...@@ -77,10 +77,11 @@ class QueryBuilder extends \yii\db\QueryBuilder ...@@ -77,10 +77,11 @@ class QueryBuilder extends \yii\db\QueryBuilder
/** /**
* Enables or disables integrity check. * Enables or disables integrity check.
* @param boolean $check whether to turn on or off the integrity check. * @param boolean $check whether to turn on or off the integrity check.
* @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. * @param string $schema the schema of the tables. Meaningless for SQLite.
* @param string $table the table name. Meaningless for SQLite.
* @throws NotSupportedException this is not supported by SQLite * @throws NotSupportedException this is not supported by SQLite
*/ */
public function checkIntegrity($check = true, $schema = '') public function checkIntegrity($check = true, $schema = '', $table = '')
{ {
throw new NotSupportedException(__METHOD__ . ' is not supported by SQLite.'); throw new NotSupportedException(__METHOD__ . ' is not supported by SQLite.');
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment