Можно ли запросить все столбцы в таблице, которые имеют ссылки на другие таблицы в sqlite? - PullRequest
0 голосов
/ 17 декабря 2018

Почти как в заголовке, если у меня есть таблица, созданная так:

CREATE TABLE "MyTable" ( 
"ID" INTEGER PRIMARY KEY NOT NULL, 
"OtherTable1ID" INTEGER NOT NULL CONSTRAINT 'OtherTable1ID' REFERENCES 'OtherTable1' ('ID'), 
"OtherTable2ID" INTEGER NOT NULL CONSTRAINT 'OtherTable2ID' REFERENCES 'OtherTable2' ('ID'), 
"Repetition" INTEGER
)

Я ищу запрос, который возвращает мне имена столбцов OtherTable1ID и OtherTable2ID,

Мой собственный подход заключается в том, чтобы запросить оператор create таблицы и найти ключевое слово REFERENCES (с помощью Regex), но я надеялся, что есть более простое решение?

Второй подходчтобы получить все имена столбцов в таблице и посмотреть, содержат ли они «ID» в имени.В основном это работает, поскольку все базы данных в этом случае следуют этому соглашению об именах, однако что если таблица содержит столбец, имя которого содержит «ID», но ничего не ссылается?Поэтому мне нужно общеприменимое решение.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете получить список и получить информацию об ограничениях внешнего ключа таблицы с помощью foreign_key_list pragma:

PRAGMA foreign_key_list(MyTable);

Если вы просто хотите получить имена столбцов и не заботитесь оостальная часть информации (или хотите использовать их в большем запросе):

SELECT "from" FROM pragma_foreign_key_list('MyTable');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...