CMssqlSchema
鍖 | system.db.schema.mssql |
---|---|
缁ф壙 | class CMssqlSchema » CDbSchema » CComponent |
鐗堟湰 | $Id: CMssqlSchema.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/db/schema/mssql/CMssqlSchema.php |
CMssqlSchema鏄粠MSSQL鏁版嵁搴撴绱㈠厓鏁版嵁淇℃伅鐨勭被銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
columnTypes | array | 鏄犲皠鍒板疄浣撳垪绫诲瀷鐨勬娊璞″垪绫诲瀷銆 | CMssqlSchema |
commandBuilder | CDbCommandBuilder | the SQL command builder for this connection. | CDbSchema |
dbConnection | CDbConnection | database connection. | CDbSchema |
tableNames | array | Returns all table names in the database. | CDbSchema |
tables | array | Returns the metadata for all tables in the database. | CDbSchema |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__construct() | Constructor. | CDbSchema |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
addColumn() | Builds a SQL statement for adding a new DB column. | CDbSchema |
addForeignKey() | Builds a SQL statement for adding a foreign key constraint to an existing table. | CDbSchema |
alterColumn() | 鏋勯犳敼鍙樺垪瀹氫箟鐨凷QL璇彞銆 | CMssqlSchema |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
checkIntegrity() | 鍚敤鎴栫鐢ㄥ畬鏁存ф鏌ャ | CMssqlSchema |
compareTableNames() | 姣旇緝涓や釜琛ㄧ殑鍚嶇О銆 | CMssqlSchema |
createIndex() | Builds a SQL statement for creating a new index. | CDbSchema |
createTable() | Builds a SQL statement for creating a new DB table. | CDbSchema |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
dropColumn() | Builds a SQL statement for dropping a DB column. | CDbSchema |
dropForeignKey() | Builds a SQL statement for dropping a foreign key constraint. | CDbSchema |
dropIndex() | Builds a SQL statement for dropping an index. | CDbSchema |
dropTable() | Builds a SQL statement for dropping a DB table. | CDbSchema |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getColumnType() | Converts an abstract column type into a physical column type. | CDbSchema |
getCommandBuilder() | 杩斿洖the SQL command builder for this connection. | CDbSchema |
getDbConnection() | 杩斿洖database connection. The connection is active. | CDbSchema |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getTable() | Obtains the metadata for the named table. | CDbSchema |
getTableNames() | Returns all table names in the database. | CDbSchema |
getTables() | Returns the metadata for all tables in the database. | CDbSchema |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
quoteColumnName() | Quotes a column name for use in a query. | CDbSchema |
quoteSimpleColumnName() | 鐢ㄥ紩鍙峰紩鐢ㄥ垪鍚嶄互渚挎煡璇㈡椂浣跨敤銆 | CMssqlSchema |
quoteSimpleTableName() | 鐢ㄥ紩鍙峰紩鐢ㄨ〃鍚嶄互渚挎煡璇㈡椂浣跨敤銆 | CMssqlSchema |
quoteTableName() | Quotes a table name for use in a query. | CDbSchema |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
refresh() | Refreshes the schema. | CDbSchema |
renameColumn() | 鏋勯犻噸鍛藉悕鍒楃殑SQL璇彞銆 | CMssqlSchema |
renameTable() | 鏋勯犻噸鍛藉悕琛ㄧ殑SQL璇彞銆 | CMssqlSchema |
resetSequence() | 閲嶇疆琛ㄧ殑涓婚敭鐨勫簭鍒楀笺 | CMssqlSchema |
truncateTable() | Builds a SQL statement for truncating a DB table. | CDbSchema |
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
createColumn() | 鍒涘缓涓涓垪銆 | CMssqlSchema |
createCommandBuilder() | 涓烘暟鎹簱鍒涘缓鍛戒护鏋勯犲櫒銆 | CMssqlSchema |
findColumns() | 鏀堕泦琛ㄧ殑鍒楀厓鏁版嵁銆 | CMssqlSchema |
findForeignKeys() | 鑾峰緱澶栭敭鍏崇郴绾︽潫鍜岃〃鍚嶃 | CMssqlSchema |
findPrimaryKey() | 浠庣粰瀹氳〃涓幏寰椾富閿垪鐨勮缁嗕俊鎭 | CMssqlSchema |
findTableNames() | 杩斿洖鎵鏈夋暟鎹簱閲岀殑琛ㄥ悕銆 | CMssqlSchema |
loadTable() | 涓烘寚瀹氳〃杞藉叆鍏冩暟鎹 | CMssqlSchema |
resolveTableNames() | 鐢熸垚鍚勭琛ㄥ悕銆 | CMssqlSchema |
灞炴ц缁
columnTypes
灞炴
锛堝彲鐢ㄨ嚜 v1.1.6锛
public array $columnTypes;
鏄犲皠鍒板疄浣撳垪绫诲瀷鐨勬娊璞″垪绫诲瀷銆
鏂规硶璇︾粏
alterColumn()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.6锛
public string alterColumn(string $table, string $column, string $type)
| ||
$table | string | 瑕佹敼鍙樼殑鍒楁墍鍦ㄨ〃銆傝琛ㄥ悕浼氳鎸囧畾鏂规硶姝g‘寮曠敤銆 |
$column | string | 瑕佹敼鍙樼殑鍒楀悕銆傝鍒楀悕浼氳鎸囧畾鏂规硶姝g‘寮曠敤銆 |
$type | string | 鏂扮殑鍒楃被鍨嬨getColumnType鏂规硶浼氳璋冪敤鏉ュ皢铏氭嫙鍒楃被鍨嬶紙鑻ュ瓨鍦級 杞崲涓哄搴旂殑瀹炰綋鍒楃被鍨嬨備换浣曟湭琚瘑鍒负铏氭嫙绫诲瀷鐨勭被鍨嬩細琚繚鐣欏湪鐢熸垚鐨凷QL涓 渚嬪锛屸榮tring鈥欎細琚浆涓衡榲archar(255)鈥欙紝鑰屸榮tring not null鈥欎細琚浆涓衡榲archar(255) not null鈥欍 |
{return} | string | 鏀瑰彉鍒楀畾涔夌殑SQL璇彞銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#416 (鏄剧ず)
public function alterColumn($table, $column, $type)
{
$type=$this->getColumnType($type);
$sql='ALTER TABLE ' . $this->quoteTableName($table) . ' ALTER COLUMN '
. $this->quoteColumnName($column) . ' '
. $this->getColumnType($type);
return $sql;
}
鏋勯犳敼鍙樺垪瀹氫箟鐨凷QL璇彞銆
checkIntegrity()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1锛
public void checkIntegrity(boolean $check=true, string $schema='')
| ||
$check | boolean | 鏄惁寮鍚畬鏁存ф鏌ャ |
$schema | string | 鍚勮〃schema銆傞粯璁や负绌哄瓧绗︿覆锛屾剰鍛崇潃褰撳墠鎴栭粯璁chema銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#111 (鏄剧ず)
public function checkIntegrity($check=true,$schema='')
{
$enable=$check ? 'CHECK' : 'NOCHECK';
if(!isset($this->_normalTables[$schema]))
$this->_normalTables[$schema]=$this->findTableNames($schema,false);
$db=$this->getDbConnection();
foreach($this->_normalTables[$schema] as $tableName)
{
$tableName=$this->quoteTableName($tableName);
$db->createCommand("ALTER TABLE $tableName $enable CONSTRAINT ALL")->execute();
}
}
鍚敤鎴栫鐢ㄥ畬鏁存ф鏌ャ
compareTableNames()
鏂规硶
public boolean compareTableNames(string $name1, string $name2)
| ||
$name1 | string | 琛ㄥ悕1 |
$name2 | string | 琛ㄥ悕2 |
{return} | boolean | 涓や釜琛ㄥ悕鏄惁鎸囧悜鍚屼竴涓〃銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#75 (鏄剧ず)
public function compareTableNames($name1,$name2)
{
$name1=str_replace(array('[',']'),'',$name1);
$name2=str_replace(array('[',']'),'',$name2);
return parent::compareTableNames(strtolower($name1),strtolower($name2));
}
姣旇緝涓や釜琛ㄧ殑鍚嶇О銆 琛ㄥ悕鍙互鏄寮曠敤鎴栨湭寮曠敤鐨勩傝鏂规硶 浼氳冭檻杩欎袱绉嶆儏鍐点
createColumn()
鏂规硶
protected CDbColumnSchema createColumn(array $column)
| ||
$column | array | 鍒楀厓鏁版嵁 |
{return} | CDbColumnSchema | 瑙勮寖鐨勫垪鍏冩暟鎹 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#315 (鏄剧ず)
protected function createColumn($column)
{
$c=new CMssqlColumnSchema;
$c->name=$column['COLUMN_NAME'];
$c->rawName=$this->quoteColumnName($c->name);
$c->allowNull=$column['IS_NULLABLE']=='YES';
if ($column['NUMERIC_PRECISION_RADIX']!==null)
{
// We have a numeric datatype
$c->size=$c->precision=$column['NUMERIC_PRECISION']!==null?(int)$column['NUMERIC_PRECISION']:null;
$c->scale=$column['NUMERIC_SCALE']!==null?(int)$column['NUMERIC_SCALE']:null;
}
elseif ($column['DATA_TYPE']=='image' || $column['DATA_TYPE']=='text')
$c->size=$c->precision=null;
else
$c->size=$c->precision=($column['CHARACTER_MAXIMUM_LENGTH']!== null)?(int)$column['CHARACTER_MAXIMUM_LENGTH']:null;
$c->autoIncrement=$column['IsIdentity']==1;
$c->init($column['DATA_TYPE'],$column['COLUMN_DEFAULT']);
return $c;
}
鍒涘缓涓涓垪銆
createCommandBuilder()
鏂规硶
protected CDbCommandBuilder createCommandBuilder()
| ||
{return} | CDbCommandBuilder | 鍛戒护鏋勫缓鍣ㄥ疄渚 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#376 (鏄剧ず)
protected function createCommandBuilder()
{
return new CMssqlCommandBuilder($this);
}
涓烘暟鎹簱鍒涘缓鍛戒护鏋勯犲櫒銆 璇ユ柟娉曞彲浠ヨ瀛愮被閲嶅啓浠ュ垱寤轰竴涓寚瀹歁SSQL鐨勫懡浠ゆ瀯寤哄櫒銆
findColumns()
鏂规硶
protected boolean findColumns(CMssqlTableSchema $table)
| ||
$table | CMssqlTableSchema | 琛ㄥ厓鏁版嵁 |
{return} | boolean | 琛ㄦ槸鍚﹀瓨鍦ㄤ簬鏁版嵁搴撻噷 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#276 (鏄剧ず)
protected function findColumns($table)
{
$columnsTable="INFORMATION_SCHEMA.COLUMNS";
$where=array();
$where[]="TABLE_NAME='".$table->name."'";
if (isset($table->catalogName))
{
$where[]="TABLE_CATALOG='".$table->catalogName."'";
$columnsTable = $table->catalogName.'.'.$columnsTable;
}
if (isset($table->schemaName))
$where[]="TABLE_SCHEMA='".$table->schemaName."'";
$sql="SELECT *, columnproperty(object_id(table_schema+'.'+table_name), column_name, 'IsIdentity') as IsIdentity ".
"FROM ".$this->quoteTableName($columnsTable)." WHERE ".join(' AND ',$where);
if (($columns=$this->getDbConnection()->createCommand($sql)->queryAll())===array())
return false;
foreach($columns as $column)
{
$c=$this->createColumn($column);
if (is_array($table->primaryKey))
$c->isPrimaryKey=in_array($c->name, $table->primaryKey);
else
$c->isPrimaryKey=strcasecmp($c->name,$table->primaryKey)===0;
$c->isForeignKey=isset($table->foreignKeys[$c->name]);
$table->columns[$c->name]=$c;
if ($c->autoIncrement && $table->sequenceName===null)
$table->sequenceName=$table->name;
}
return true;
}
鏀堕泦琛ㄧ殑鍒楀厓鏁版嵁銆
findForeignKeys()
鏂规硶
protected array findForeignKeys(CMssqlTableSchema $table)
| ||
$table | CMssqlTableSchema | 琛 |
{return} | array | 澶栭敭鍏崇郴琛ㄥ悕鍜岄敭銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#223 (鏄剧ず)
protected function findForeignKeys($table)
{
$rc='INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS';
$kcu='INFORMATION_SCHEMA.KEY_COLUMN_USAGE';
if (isset($table->catalogName))
{
$kcu=$table->catalogName.'.'.$kcu;
$rc=$table->catalogName.'.'.$rc;
}
//From http://msdn2.microsoft.com/en-us/library/aa175805(SQL.80).aspx
$sql = <<<EOD
SELECT
KCU1.CONSTRAINT_NAME AS 'FK_CONSTRAINT_NAME'
, KCU1.TABLE_NAME AS 'FK_TABLE_NAME'
, KCU1.COLUMN_NAME AS 'FK_COLUMN_NAME'
, KCU1.ORDINAL_POSITION AS 'FK_ORDINAL_POSITION'
, KCU2.CONSTRAINT_NAME AS 'UQ_CONSTRAINT_NAME'
, KCU2.TABLE_NAME AS 'UQ_TABLE_NAME'
, KCU2.COLUMN_NAME AS 'UQ_COLUMN_NAME'
, KCU2.ORDINAL_POSITION AS 'UQ_ORDINAL_POSITION'
FROM {$this->quoteTableName($rc)} RC
JOIN {$this->quoteTableName($kcu)} KCU1
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
JOIN {$this->quoteTableName($kcu)} KCU2
ON KCU2.CONSTRAINT_CATALOG =
RC.UNIQUE_CONSTRAINT_CATALOG
AND KCU2.CONSTRAINT_SCHEMA =
RC.UNIQUE_CONSTRAINT_SCHEMA
AND KCU2.CONSTRAINT_NAME =
RC.UNIQUE_CONSTRAINT_NAME
AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
WHERE KCU1.TABLE_NAME = :table
EOD;
$command = $this->getDbConnection()->createCommand($sql);
$command->bindValue(':table', $table->name);
$fkeys=array();
foreach($command->queryAll() as $info)
{
$fkeys[$info['FK_COLUMN_NAME']]=array($info['UQ_TABLE_NAME'],$info['UQ_COLUMN_NAME'],);
}
return $fkeys;
}
鑾峰緱澶栭敭鍏崇郴绾︽潫鍜岃〃鍚嶃
findPrimaryKey()
鏂规硶
protected mixed findPrimaryKey(CMssqlTableSchema $table)
| ||
$table | CMssqlTableSchema | 琛 |
{return} | mixed | 涓婚敭锛堣嫢涓婚敭涓嶅瓨鍦ㄥ垯杩斿洖null锛屽崟涓涓婚敭鍒欒繑鍥炲瓧绗︿覆锛屽鍚堜富閿垯杩斿洖鏁扮粍锛夈 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#182 (鏄剧ず)
protected function findPrimaryKey($table)
{
$kcu='INFORMATION_SCHEMA.KEY_COLUMN_USAGE';
$tc='INFORMATION_SCHEMA.TABLE_CONSTRAINTS';
if (isset($table->catalogName))
{
$kcu=$table->catalogName.'.'.$kcu;
$tc=$table->catalogName.'.'.$tc;
}
$sql = <<<EOD
SELECT k.column_name field_name
FROM {$this->quoteTableName($kcu)} k
LEFT JOIN {$this->quoteTableName($tc)} c
ON k.table_name = c.table_name
AND k.constraint_name = c.constraint_name
WHERE c.constraint_type ='PRIMARY KEY'
AND k.table_name = :table
AND k.table_schema = :schema
EOD;
$command = $this->getDbConnection()->createCommand($sql);
$command->bindValue(':table', $table->name);
$command->bindValue(':schema', $table->schemaName);
$primary=$command->queryColumn();
switch (count($primary))
{
case 0: // No primary key on table
$primary=null;
break;
case 1: // Only 1 primary key
$primary=$primary[0];
break;
}
return $primary;
}
浠庣粰瀹氳〃涓幏寰椾富閿垪鐨勮缁嗕俊鎭
findTableNames()
鏂规硶
protected array findTableNames(string $schema='', boolean $includeViews=true)
| ||
$schema | string | 琛╯chema銆傞粯璁ゆ槸绌哄瓧绗︿覆锛屾剰鍛崇潃褰撳墠鎴栭粯璁chema銆 鑻ヤ负绌猴紝鍒欒繑鍥炵殑琛ㄥ悕浼氳鍔犱笂schema鍚嶅墠缂銆 |
$includeViews | boolean | 鏄惁鍦ㄧ粨鏋滀腑鍖呭惈瑙嗗浘銆傞粯璁や负true銆 |
{return} | array | 鏁版嵁搴撻噷鐨勬墍鏈夎〃鍚嶃 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#344 (鏄剧ず)
protected function findTableNames($schema='',$includeViews=true)
{
if($schema==='')
$schema=self::DEFAULT_SCHEMA;
if($includeViews)
$condition="TABLE_TYPE in ('BASE TABLE','VIEW')";
else
$condition="TABLE_TYPE='BASE TABLE'";
$sql=<<<EOD
SELECT TABLE_NAME, TABLE_SCHEMA FROM [INFORMATION_SCHEMA].[TABLES]
WHERE TABLE_SCHEMA=:schema AND $condition
EOD;
$command=$this->getDbConnection()->createCommand($sql);
$command->bindParam(":schema", $schema);
$rows=$command->queryAll();
$names=array();
foreach ($rows as $row)
{
if ($schema == self::DEFAULT_SCHEMA)
$names[]=$row['TABLE_NAME'];
else
$names[]=$schema.'.'.$row['TABLE_SCHEMA'].'.'.$row['TABLE_NAME'];
}
return $names;
}
杩斿洖鎵鏈夋暟鎹簱閲岀殑琛ㄥ悕銆
loadTable()
鏂规硶
protected CMssqlTableSchema loadTable(string $name)
| ||
$name | string | 琛ㄥ悕 |
{return} | CMssqlTableSchema | 鍙栧喅浜庤〃鍏冩暟鎹殑椹卞姩銆傝嫢琛ㄤ笉瀛樺湪鍒欒繑鍥瀗ull銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#129 (鏄剧ず)
protected function loadTable($name)
{
$table=new CMssqlTableSchema;
$this->resolveTableNames($table,$name);
//if (!in_array($table->name, $this->tableNames)) return null;
$table->primaryKey=$this->findPrimaryKey($table);
$table->foreignKeys=$this->findForeignKeys($table);
if($this->findColumns($table))
{
return $table;
}
else
return null;
}
涓烘寚瀹氳〃杞藉叆鍏冩暟鎹
quoteSimpleColumnName()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.6锛
public string quoteSimpleColumnName(string $name)
| ||
$name | string | 鍒楀悕 |
{return} | string | 姝g‘寮曠敤鐨勫垪鍚 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#62 (鏄剧ず)
public function quoteSimpleColumnName($name)
{
return '['.$name.']';
}
鐢ㄥ紩鍙峰紩鐢ㄥ垪鍚嶄互渚挎煡璇㈡椂浣跨敤銆 涓涓笉鍖呮嫭鍓嶇紑鐨勭畝鍗曞垪鍚嶃
quoteSimpleTableName()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.6锛
public string quoteSimpleTableName(string $name)
| ||
$name | string | 琛ㄥ悕 |
{return} | string | 姝g‘寮曠敤鐨勮〃鍚 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#50 (鏄剧ず)
public function quoteSimpleTableName($name)
{
return '['.$name.']';
}
鐢ㄥ紩鍙峰紩鐢ㄨ〃鍚嶄互渚挎煡璇㈡椂浣跨敤銆 涓涓笉鍖呮嫭鍓嶇紑鐨勭畝鍗曡〃鍚嶃
renameColumn()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.6锛
public string renameColumn(string $table, string $name, string $newName)
| ||
$table | string | 瑕侀噸鍛藉悕鐨勫垪鎵鍦ㄨ〃銆傝琛ㄥ悕浼氳鎸囧畾鏂规硶姝g‘寮曠敤銆 |
$name | string | 鍘熸湁鍒楀悕銆傝鍒楀悕浼氳鎸囧畾鏂规硶姝g‘寮曠敤銆 |
$newName | string | 鏂板垪鍚嶃傝鍒楀悕浼氳鎸囧畾鏂规硶姝g‘寮曠敤銆 |
{return} | string | 閲嶅懡鍚嶅垪鐨凷QL璇彞銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#401 (鏄剧ず)
public function renameColumn($table, $name, $newName)
{
return "sp_rename '$table.$name', '$newName', 'COLUMN'";
}
鏋勯犻噸鍛藉悕鍒楃殑SQL璇彞銆
renameTable()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1.6锛
public string renameTable(string $table, string $newName)
| ||
$table | string | 瑕侀噸鍛藉悕鐨勮〃銆傝琛ㄥ悕浼氳鎸囧畾鏂规硶姝g‘寮曠敤銆 |
$newName | string | 鏂拌〃鍚嶃 璇ヨ〃鍚嶄細琚寚瀹氭柟娉曟纭紩鐢ㄣ |
{return} | string | 閲嶅懡鍚嶆暟鎹〃鐨凷QL璇彞銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#388 (鏄剧ず)
public function renameTable($table, $newName)
{
return "sp_rename '$table', '$newName'";
}
鏋勯犻噸鍛藉悕琛ㄧ殑SQL璇彞銆
resetSequence()
鏂规硶
锛堝彲鐢ㄨ嚜 v1.1锛
public void resetSequence(CDbTableSchema $table, mixed $value=NULL)
| ||
$table | CDbTableSchema | 瑕侀噸缃富閿簭鍒楃殑琛╯chema |
$value | mixed | 鏂版彃鍏ヨ鐨勪富閿笺傚鏋滄湭璁剧疆锛 鍒欐柊琛屼富閿间负1銆 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#91 (鏄剧ず)
public function resetSequence($table,$value=null)
{
if($table->sequenceName!==null)
{
$db=$this->getDbConnection();
if($value===null)
$value=$db->createCommand("SELECT MAX(`{$table->primaryKey}`) FROM {$table->rawName}")->queryScalar();
$value=(int)$value;
$name=strtr($table->rawName,array('['=>'',']'=>''));
$db->createCommand("DBCC CHECKIDENT ('$name', RESEED, $value)")->execute();
}
}
閲嶇疆琛ㄧ殑涓婚敭鐨勫簭鍒楀笺 搴忓垪浼氳鍏呭硷紝杩欐牱涓鏉ワ紝鏂版彃鍏ヨ鐨勪富閿 灏嗕細鏄寚瀹氬兼垨鑰1銆
resolveTableNames()
鏂规硶
protected void resolveTableNames(CMssqlTableSchema $table, string $name)
| ||
$table | CMssqlTableSchema | 琛ㄥ疄渚 |
$name | string | 鏈紩鐢ㄧ殑琛ㄥ悕 |
婧愮爜锛 framework/db/schema/mssql/CMssqlSchema.php#149 (鏄剧ず)
protected function resolveTableNames($table,$name)
{
$parts=explode('.',str_replace(array('[',']'),'',$name));
if(($c=count($parts))==3)
{
// Catalog name, schema name and table name provided
$table->catalogName=$parts[0];
$table->schemaName=$parts[1];
$table->name=$parts[2];
$table->rawName=$this->quoteTableName($table->catalogName).'.'.$this->quoteTableName($table->schemaName).'.'.$this->quoteTableName($table->name);
}
elseif ($c==2)
{
// Only schema name and table name provided
$table->name=$parts[1];
$table->schemaName=$parts[0];
$table->rawName=$this->quoteTableName($table->schemaName).'.'.$this->quoteTableName($table->name);
}
else
{
// Only the name given, we need to get at least the schema name
//if (empty($this->_schemaNames)) $this->findTableNames();
$table->name=$parts[0];
$table->schemaName=self::DEFAULT_SCHEMA;
$table->rawName=$this->quoteTableName($table->schemaName).'.'.$this->quoteTableName($table->name);
}
}
鐢熸垚鍚勭琛ㄥ悕銆