Opublikowano: 06-06-2016



Foreign Key Constraints pozwala zachować spójność bazy danych poprzez weryfikację powiązań pomiędzy tabelami. O ile większość programistów wie po co są klucze obce i jak je oznaczać, o tyle już nie każdy musi wiedzieć, że w SQLite opcja ta (nawet poprawnie oznaczona przez programistę) jest domyślnie wyłączona. Do jej włączenia niezbędne jest wykonanie odpowiedniego polecenia PRAGMA.

Zależność pomiędzy tabelami opisujemy za pomocą kluczy obcych. Jeśli w tabeli B utworzymy klucz obcy wskazujący na kolumnę tabeli A, przy włączonej weryfikacji, utworzenie nowego rekordu w tabeli B odwołującego się do nieistniejącego rekordu w tabeli A nie powinno się powieść. Domyślnie SQLite pozwala na takie zachowanie. Można to zmienić za pomocą polecenia:

PRAGMA foreign_keys = on;

Wykonanie polecenia spowoduje włączenie weryfikacji zależności, ale tylko w obrębie obecnego połączenia. Nie jest to ustawienie trwałe, co obrazuje poniższy przykład:

W nowych aplikacjach ustawienie to powinno być zawsze włączone (z raczej dość oczywistych powodów) przez programistę, w końcu jak informuje dokumentacja [1]: To minimize future problems, applications should set the foreign key enforcement flag as required by the application and not depend on the default setting.

Kontrola integralności rekordów w tabelach nie jest jedyną zaletą stosowania kluczy obcych, w końcu pozwalają między innymi definiować akcje ON DELETE i ON UPDATE. Więcej o kluczach obcych w linku [2].



Comments powered by Disqus