Nie mogłem znaleźć sposobu na zdefiniowanie ograniczeń klucza obcego za pomocą zakładki "Struktura bazy danych". Zdecydowanie polecam definiowanie definicji tabel i ograniczeń przy użyciu skryptu zamiast budowania ich przy użyciu edytora graficznego - znacznie ułatwia to tworzenie nowych baz danych i śledzenie zmian w schemacie.
Przykładowo załóżmy, że mamy dwie tabele: jedną definiującą nazwy plików i jedną określającą metodę zastosowaną do kompresji, możemy dodać ograniczenie klucza obcego do tabeli file_definition podczas definiowania.
CREATE TABLE [compression_state] (
[compression_state_id] INTEGER PRIMARY KEY NOT NULL,
[value] TEXT NOT NULL
);
CREATE TABLE [file_definition] (
[file_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[compression_state_id] INTEGER NOT NULL,
[name] TEXT NOT NULL,
FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id)
);
Jednak domyślnie SQLite nie będzie egzekwować ograniczenia, dlatego za każdym razem po podłączeniu do bazy danych, należy wydać następujące polecenie, aby umożliwić ograniczenie sprawdzania.
PRAGMA foreign_keys = ON;
Więcej informacji w documentation.
Jeśli tabele już istnieją i nie chcesz, aby zbudować kompletny skrypt to jesteś pecha, SQLite nie obsługuje dodawanie kluczy obcych, gdy stół został wygenerowany, zobacz tutaj: SQL Features That SQLite Does Not Implement