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]
]