SQLite PRAGMA foreign_keys = ON

Pozdrav,

Slab mi engleski i nikako da iz literature točno skužim što znači ova naredba “PRAGMA foreign_keys = ON”

Ako kreiram tablicu recimo:

CREATE TABLE imaSliku
(
idProfile INTEGER,
slika Text,
FOREIGN KEY (idProfile) REFERENCES osobe(idProfile)
);

Dali se stvorila ispravna veza izmedju tablica “imaSliku” i “osobe”, bez obzira što nisam prethodno aktivirao “PRAGMA foreign_keys = ON” ??

Koliko se čini, strani ključevi u SQLiteu nisu predefinirano aktivni. Zapravo, treba ih aktivirati pri svakom spoju na bazu. Čini mi se da bi tvoj primjer kreirao sve što je potrebno za podršku stranog ključa, ali da bi sustav za upravljanje bazom stvarno vršio provjeru indiciranog referencijalnog itegriteta, nakon što otvoriš konekciju prema bazi, moraš “aktivirati” tu značajku.

Vrlo jednostavan način testiranja je da pokušaš dodati zapis koji ne bi smio proći, pa vidiš kada će baza javiti pogrešku, a kada neće.

[quote=“tsereg”]
Vrlo jednostavan način testiranja je da pokušaš dodati zapis koji ne bi smio proći, pa vidiš kada će baza javiti pogrešku, a kada neće.[/quote]

U tome mi i jeste pomutnja, jer bio sam radio baš po primjerima koje si mi linkao, i nikako da dobijem da mi server vrisne grešku prilikom unosa foreign ključa za koji ne postoji odgovarajuća vrijednost u tablici na koju se odnosi. A probao sam “PRAGMA foreign_keys = ON” …aktivirati i prije kreiranja samih tablica, i naravno nakon konekcije u kojoj pokušavam izvesti nedopusteno umetanje podataka.

E sad, ja radim s bazom iz PHP-a …a uzasno slabo nalazim primjera PHP+SQLite, pa neznam jeli ovo zapravo dobar način aktivacije pragme:

$query = “PRAGMA foreign_keys = ON”;
if(!$database->queryExec($query, $error)){die($error);}

probao sam napraviti i ovako upakiran query…odmah i pragma i insert:

$query=‘PRAGMA foreign_keys = ON ; INSERT INTO imaSliku VALUES(50000,“imeSlike”)’;
if(!$database->queryExec($query, $error)){die($error);};

da stvar bude gora, nije vrisnula greška ni kad sam probao nešto ovakvo, string umjesto integera:

$query=‘PRAGMA foreign_keys = ON ; INSERT INTO imaSliku VALUES(“string”,“imeSlike”)’;
if(!$database->queryExec($query, $error)){die($error);};

Što je SQLite tako slabo popularan da baš nitko nema ovaj odgovor “u rukavu”? :s

Meni se odabir SQLite činio kao dobar…jer ga je praktično prenostiti (običan file) …i mentor mi je sugestirao odabir SQLite-a.
Ali u čem je problem, da se tako rijetko koristi?


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja