• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/db/mysqldbconnection.php
  • Класс: BitrixMainDBMysqlDbConnection
  • Вызов: MysqlDbConnection::getIndexName
public function getIndexName($tableName, array $arColumns, $strict = false)
{
	if (!is_array($arColumns) || count($arColumns) <= 0)
		return null;

	$rs = $this->query("SHOW INDEX FROM `".$this->getSqlHelper()->forSql($tableName)."`");
	if (!$rs)
		return null;

	$arIndexes = array();
	while ($ar = $rs->fetch())
		$arIndexes[$ar["Key_name"]][$ar["Seq_in_index"] - 1] = $ar["Column_name"];

	$strColumns = implode(",", $arColumns);
	foreach ($arIndexes as $Key_name => $arKeyColumns)
	{
		ksort($arKeyColumns);
		$strKeyColumns = implode(",", $arKeyColumns);
		if ($strict)
		{
			if ($strKeyColumns === $strColumns)
				return $Key_name;
		}
		else
		{
			if (substr($strKeyColumns, 0, strlen($strColumns)) === $strColumns)
				return $Key_name;
		}
	}

	return null;
}