Yii Framework v1.1.10 绫诲弬鑰

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);
    }
}

鐢熸垚鍚勭琛ㄥ悕銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.