No SQLite, você pode usar uma instrução PRAGMA para retornar uma lista de chaves estrangeiras para uma determinada tabela.
Sintaxe
A sintaxe fica assim:
PRAGMA foreign_key_list(table-name);
Onde
table-name
é o nome da tabela da qual você deseja obter a lista de chaves estrangeiras. Exemplo
Primeiro, vamos criar uma tabela com uma restrição de chave estrangeira.
CREATE TABLE Types(
TypeId INTEGER PRIMARY KEY,
Type
);
CREATE TABLE Pets(
PetId INTEGER PRIMARY KEY,
PetName,
TypeId,
FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);
Neste caso eu criei duas tabelas. Os animais de estimação tabela tem uma restrição de chave estrangeira que faz referência aos Tipos tabela.
Agora posso usar o
PRAGMA foreign_key_list(table-name)
instrução para recuperar essa chave estrangeira. .mode line
PRAGMA foreign_key_list(Pets);
Resultado (usando saída vertical):
id = 0 seq = 0 table = Types from = TypeId to = TypeId on_update = NO ACTION on_delete = NO ACTION match = NONE
Esta instrução PRAGMA retorna oito colunas, então usei
.mode line
para produzir os resultados verticalmente. Isso é para que você não precise rolar para os lados. Nesse caso, há apenas uma restrição de chave estrangeira na tabela. Se houvesse mais, eles seriam listados nos resultados.
Sem chaves estrangeiras
Aqui está o que acontece se eu executar a mesma instrução PRAGMA em uma tabela sem nenhuma chave estrangeira.
PRAGMA foreign_key_list(Types);
Resultado (usando saída vertical):
(Isso está em branco porque não há chaves estrangeiras.)
Retorne as instruções CREATE TABLE
A instrução a seguir pode ser usada para retornar o código SQL real usado para criar cada tabela com uma chave estrangeira.
.mode column
SELECT sql
FROM sqlite_master
WHERE sql LIKE('%REFERENCES%');
Resultado:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )
Nesse caso, o banco de dados contém apenas uma chave estrangeira (aquela que criei para este exemplo). Se houvesse mais, o
CREATE TABLE
afirmações seriam todas listadas nestes resultados.