• Модуль: 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);
}