2013-05-14 13 views

Odpowiedz

12

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

6

Późne odpowiedź może pomocne dla kogoś innego

z dokumentacji SQLite: CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER -- Must map to an artist.artistid! );
iw końcu CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER, FOREIGN KEY(trackartist) REFERENCES artist(artistid) );

w przeglądarce DB SQLite Środowiska (v 3.8.0 - Sqlite v 3.9.2), kiedy dodaj D Pola B tabeli Tabela wraz z PK, AI i innymi kolumnami można znaleźć kolumnę klucza obcego.
Tutaj i do tego przykładu wystarczy dodać wykonawcę (artystę) w wierszu trackartu .
Następnie tworzone jest ograniczenie klucza obcego.

25

Wiem, że to pytanie zostało zadane dawno temu, ale znalazłem je. Jest wbudowany w GUI. Wystarczy przeciągnąć i zmienić te karty Nazwa, Typ, aby zrobić miejsce dla karty Klucz obcy. Umieść wskaźnik myszy na końcu i przeciągnij nagłówek.

Moja wersja przeglądarki SQLite to wersja 3.7.0.

enter image description here

0

W DB Browser, w oknie Edycja definicji tabeli, można kliknąć dwukrotnie pusty obszar kluczowych zagranicznej i pole tekstowe aktywuje. Możesz dodać swój klucz obcy.