- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/db/mssqlconnection.php
- Класс: BitrixMainDBMssqlConnection
- Вызов: MssqlConnection::getIndexName
public function getIndexName($tableName, array $columns, $strict = false)
{
if (empty($columns))
{
return null;
}
//2005
//$rs = $this->query("SELECT index_id, COL_NAME(object_id, column_id) AS column_name, key_ordinal FROM SYS.INDEX_COLUMNS WHERE object_id=OBJECT_ID('".$this->forSql($tableName)."')", true);
//2000
$rs = $this->query(
"SELECT s.indid as index_id, s.keyno as key_ordinal, c.name column_name, si.name index_name ".
"FROM sysindexkeys s ".
" INNER JOIN syscolumns c ON s.id = c.id AND s.colid = c.colid ".
" INNER JOIN sysobjects o ON s.id = o.Id AND o.xtype = 'U' ".
" LEFT JOIN sysindexes si ON si.indid = s.indid AND si.id = s.id ".
"WHERE o.name = UPPER('".$this->getSqlHelper()->forSql($tableName)."')");
$indexes = array();
while ($ar = $rs->fetch())
{
$indexes[$ar["index_name"]][$ar["key_ordinal"] - 1] = $ar["column_name"];
}
return static::findIndex($indexes, $columns, $strict);
}