sql >> Databáze >  >> RDS >> SQLite

Vraťte seznam cizích klíčů v SQLite

V SQLite můžete pomocí příkazu PRAGMA vrátit seznam cizích klíčů pro danou tabulku.

Syntaxe

Syntaxe vypadá takto:

PRAGMA foreign_key_list(table-name);

Kde table-name je název tabulky, ze které chcete mít seznam cizích klíčů.

Příklad

Nejprve vytvořte tabulku s omezením cizího klíče.

CREATE TABLE Types( 
    TypeId INTEGER PRIMARY KEY, 
    Type
);

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);

V tomto případě jsem vytvořil dvě tabulky. Zvířata tabulka má omezení cizího klíče, které odkazuje na Typy tabulka.

Nyní mohu použít PRAGMA foreign_key_list(table-name) příkaz k načtení tohoto cizího klíče.

.mode line
PRAGMA foreign_key_list(Pets);

Výsledek (při použití vertikálního výstupu):

      id = 0
      seq = 0
    table = Types
     from = TypeId
       to = TypeId
on_update = NO ACTION
on_delete = NO ACTION
    match = NONE

Tento příkaz PRAGMA vrací osm sloupců, takže jsem použil .mode line k výstupu výsledků vertikálně. To proto, abyste se nemuseli posouvat do stran.

V tomto případě je v tabulce pouze jedno omezení cizího klíče. Pokud by jich bylo více, byli by uvedeni ve výsledcích.

Žádné cizí klíče

Zde je to, co se stane, když spustím stejný příkaz PRAGMA na tabulce bez cizích klíčů.

PRAGMA foreign_key_list(Types);

Výsledek (při použití vertikálního výstupu):

 

(Toto je prázdné, protože neexistují žádné cizí klíče.)

Vraťte příkazy CREATE TABLE

Následující příkaz lze použít k vrácení skutečného kódu SQL použitého k vytvoření každé tabulky s cizím klíčem.

.mode column
SELECT sql 
FROM sqlite_master 
WHERE sql LIKE('%REFERENCES%');

Výsledek:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
)

V tomto případě databáze obsahuje pouze jeden cizí klíč (ten, který jsem vytvořil pro tento příklad). Pokud jich bylo více, CREATE TABLE v těchto výsledcích by byly všechny uvedeny.


  1. AKTUALIZACE MySQL:5 nejlepších tipů pro vývojáře T-SQL

  2. Jak najít běžící port SQL Serveru?

  3. Alternativy PGTune - Konfigurace ClusterControl PostgreSQL

  4. Oracle ORA-01008:ne všechny proměnné jsou svázány Error w/ Parameters