SELECT sysobjects.xtype, syscolumns.name, sysindexkeys.indid, sysobjects.type
FROM
syscolumns
LEFT JOIN sysobjects ON syscolumns.id = sysobjects.id
LEFT JOIN sysindexkeys ON (
syscolumns.id = sysindexkeys.id AND syscolumns.colid = sysindexkeys.colid
)
WHERE sysobjects.name = '{$table}'
AND sysindexkeys.indid IS NOT NULL
ORDER BY sysindexkeys.indid, sysindexkeys.keyno
На самом деле я использую следующий запрос, чтобы получить имя столбца и номер ключа.
Проблема в том, что моя таблица имеет 3 поля:
user_id
config_name
config_value
С первичным ключом на user_id И config_name.
Я ожидаю получить коллекцию:
[
['name' => 'user_id', 'keyno' => 1],
['name' => 'config_name', 'keyno' => 1]
]
Но я получаю:
[
['name' => 'user_id', 'keyno' => 1],
['name' => 'config_name', 'keyno' => 2]
]
Что я делаю не так?
изменить: я получаю те же странные результаты, используя таблицу с двумя индексами
таблица: project_image_id project_id project_image_src
PK для project_image_id И уникальный индекс для project_id И project_image_src
Ожидал:
[
['name' => 'project_image_id', 'keyno' => 1],
['name' => 'project_id', 'keyno' => 2]
['name' => 'project_image_src', 'keyno' => 2]
]
Но я получаю:
[
['name' => 'project_image_id', 'keyno' => 1],
['name' => 'project_id', 'keyno' => 1]
['name' => 'project_image_src', 'keyno' => 2]
]