A törléssel és frissítéssel kapcsolatos műveletek - a külföldi kulcsok speciális funkciói - a külföldi kulcsok támogatása
4.3. ON TÖRLÉS és ON UPDATE műveletek
Kifejezések a Törlés az UPDATE és idegen kulcsok kerülnek felhasználásra adja végrehajtandó műveletek törlésekor a szülő tábla sorokat (ON DELETE), vagy megváltoztatja a szülő gomb (ON UPDATE). Ugyanaz az idegen kulcs különböző műveleteket adhat meg az ON DELETE és ON UPDATE beállításokhoz. A külföldi kulcsok fellépése sokféle módon indítja el a triggereket.
Az SQLite adatbázis akció a Törlés és az ON UPDATE társított adatokat egy idegen kulcs a következők lehetnek: NO ACTION KORLÁTOZZÁK SET NULL, ALAPBEÁLLÍTÁS vagy CASCADE. Ha az akció nincs kifejezetten megadva, az az alapértelmezett NO ACTION.
- NINCS ACTION. a "NINCS ACTION" opció azt jelenti, hogy ha a szülői kulcsot megváltoztatják vagy törlik az adatbázisból, akkor nem történik különleges művelet.
- RESTRICT. akció «RESTRICT» abban a tényben rejlik, hogy a kérelem nem veheti át (ON DELETE korlátozni), vagy változás (ON UPDATE korlátozni) a szülő gombot, ha van egy vagy több lehet rá hivatkozni leányvállalatok kulcsokat. A különbség a hatását RESTRICT cselekvés és a szokásos viselkedését a külföldi kulcs korlátozó intézkedés akkor kezdődik, amikor változik a felvételi területen, és nem akkor, amikor befejezte az aktuális kérés, mint abban az esetben azonnali korlátozásokat, és nem akkor, amikor a végek az aktuális tranzakció mint a halasztott korlátozás esetében. Még ha az idegen kulcs be, mint halasztható el, ha a keresetét nyilvánították RESTRICT, SQLite generál hibaüzenetet azonnal, ha már eltávolították, vagy megváltozott a szülő kulcs, amely meghatározza a gyermek kulcsokat.
- SET NULL. Ha a kereset kialakítva «SET NULL», akkor, amikor eltávolítja a szülő gomb (ON DELETE SET NULL), illetve annak változása (ON UPDATE SET NULL) gyermek kulcs oszlopok ennek az értéke NULL az összes sorban a gyermek asztal, amely hivatkozik az eltávolítható / változó sor a szülő táblázatban.
- SET DEFAULT. a SET DEFAULT művelet hasonló a SET NULL-hoz, kivéve, hogy a gyermekkulcs egyes oszlopainak értéke nem NULL értékre van állítva, hanem az adott oszlop alapértelmezett értékére. Az oszlopok hozzárendeléséhez szükséges alapértelmezett értékekről a CREATE TABLE részletes dokumentációja olvasható.
- CASCADE. a "CASCADE" művelet kiterjeszti a szülői kulcs törlésére és megváltoztatására irányuló műveleteit eltartott gyermekei számára. Az ON DELETE CASCADE műveletére ez azt jelenti, hogy a gyermektáblázat minden sorát, amely a törölni kívánt szülő sorhoz tartozik, szintén törlődik. Az ON UPDATE CASCADE művelet esetében ez abban a tényt fejezi ki, hogy az eltartott gyermek kulcsában tárolt értékek helyettesítik a szülő kulcs új értékeit.
Például adja hozzá az "ON UPDATE CASCADE" kifejezést az alábbiak szerint. Ez egy jobb séma az 1. fejezet példájából, amely lehetővé teszi a felhasználó számára az "artistid" oszlop (az idegen kulcs szülő kulcsának) módosítását a referenciális integritás megsértése nélkül:
Az UPDATE vagy az ON TÖRLÉS műveletek beállítása nem jelenti azt, hogy ez az idegen kulcskorlátozás nem szükséges.
Ha például egy akció ON DELETE SET DEFAULT, de hiányzik az a szülő tábla sor megfelelő alapértelmezett leányának kulcs oszlop, megszűnik a szülő kulcs alkalmazásával, amelynek vannak eltartott gyermek kulcsok vezet megsértését idegen kulcs. Például:
Hasonlóan azokhoz az SQLite műveletekhez, amelyek ON DELETE SET DEFAULT jelöléssel vannak jelölve és a fenti példában bemutatottak, a következő "TÖRLÉS TÖRLÉSE" működése működik:
Ha az idegen kulcskal rendelkező szülői táblázat sorszáma törlődik, vagy ha a szülő kulcs oszlopokban tárolt értékek megváltoztak, a következő logikai eseménysorozatok fordulnak elő:
- A BEFORE indítóprogram fut.
- Helyi korlátozások (nem idegen kulcs) ellenőrzése.
- A szülõtábla sorát frissítjük vagy töröljük.
- Az idegen kulcs által megkövetelt egyéb műveletek végrehajtására kerül sor.
- Az AFTER trigger program fut.
Van egy jelentős különbség az idegen kulcs és az SQL triggerek ON UPDATE művelete között. Az ON UPDATE művelet csak akkor kerül végrehajtásra, ha a szülői kulcs értékeit úgy módosítja, hogy a szülő kulcs új értékei nem egyenértékűek a régebbi értékekkel. Például: