Sqlite3 FK

  • Rejestracja: dni
  • Ostatnio: dni
0

Tworzę 2 tabele powiązane ze sobą kluczem obcym.

Kopiuj
CREATE TABLE artist(
  artistid    INTEGER PRIMARY KEY, 
  artistname  TEXT
);

CREATE TABLE track(
  trackid     INTEGER, 
  trackname   TEXT, 
  trackartist INTEGER,
  FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);

Wstawiam przykładowe wartości:

Kopiuj
INSERT INTO artist VALUES(2, 'Nazwa');
INSERT INTO track VALUES(1, 'Mr. Bojangles', 5);

Dlaczego po 2 insercie nie wyświetla mi błędu, że niepoprawna wartość, ponieważ nie ma id 5 w tabeli artist.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
  • Rejestracja: dni
  • Ostatnio: dni
0

Stąd też ten przykład :) Problem w tym, że u mnie nie wyskakuje poniższy błąd, tylko dodaje rekord do tabeli

Kopiuj
sqlite> -- This fails because the value inserted into the trackartist column (3)
sqlite> -- does not correspond to row in the artist table.
sqlite> INSERT INTO track VALUES(14, 'Mr. Bojangles', 3);
**SQL error: foreign key constraint failed**
abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

to przeczytałeś Foreign key constraints are disabled by default (for backwards compatibility), so must be enabled separately for each database connection.?? Odblokowałeś FK?

  • Rejestracja: dni
  • Ostatnio: dni
0

Przeczytałem i na tym się zatrzymałem. Nie przeczytałem dalej, że są wersje, które nie obsługują kluczy obcych... Muszę chyba skorzystać z innej bazy

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.