Parašė ozzWANTED· 2010 Sau. 23 22:01:48
#5
Tai raktas į kitą lentelę.
Pvz.
Tavo lentelėje koks nors stlupelis yra priklausomas nuo kitos lentelės stulpelio(tas kitos lentelės stulpelis, REKOMENDUOJAMA, kad būtų PRIMARY KEY, ar bent jau UNIQUE index.
Kodas:
CONSTRAINT FOREIGN KEY isorinis REFERENCES kita_lentel(user_id)
Jis skirtas kad būtų išvengta duomenų anomalijų, nes galima naudoti frazes sekančios po jo kodo:
ON UPDATE RESTRICT ON DELETE CASCADE
ir t.t.
Pvz. aukščiau paminėta reiškia, kad NELEIS atnaujinti pagrindinės eilutės, jeigu jis turi priklausomų nuo jos eilučių kitose lentelėse, o TRYNIMO atveju - pašalins ir šią eilutę ir visas su ja susijusias.
Žmogiškai šnekant.
Pvz. turi lentelę users(user_id,....)
ir yra user_acts_history(act_id, ..., related_id),
Ir jeigu trinsi userį iš users, tai automatiškai pasišalins visi su jo ID susiję įrašai lentelėje user_acts_history. O jeigu users lentelėje bandysi pakeisti user_id, tau mes SQLSTATE klaidą, kad negalima ištrinti įrašo, nes jis turi priklausomų laukelių.
Redagavo ozzWANTED· 2010 Sau. 23 22:01:09