Isätaulun rivin poisto trikkerillä tai proseduurilla

Pitäsisi poistaa isätaulusta rivi, johon on lapsitaulussa viittaus, pitäisi ensin merkitä lapsitauluun ko. rivin viiteavaimeen null-arvo,
jotta isätaulussa rivin poisto onnistuu. Jos näin ei tee TKHJ-herjaa.

Lapsitaulun vastaavia rivejä tarvitaan myöhemmin joten null-arvot sallitaan viiteavaimiin, kun isätaulusta poistetaan rivejä.

Miten tämä kannattaisi SQL:ssä toteuttaa trikkerinä vaiko proseduurina?

Trikkerin kohdalla en tiedä miten kohdistaisi oikeaan riviin, pitäisi siis ymmärtää että ennen poistoa merkkaa oikeaan lapsitaulun riviin viiteavaimeen null-arvon.

Kun tehdään delete, ei ilmeisesti ole trikkerissä keinoa kohdistaa isätaulun perusavainta vastaava lapsitaulun rivi.

Proseduurissa tämä käy, välittämällä ensin proseduurille parametrina perusavain, joka siis proseduurissa on sekä update:lle että deletelle sama parametriarvo, ensin tehdään vain update ja arvoksi null ja sen jälkeen delete, jolloin isätaulusta lähtee rivi pois, kun ei ole enää viittausta.

Tietääkö joku mitään keinoa miten trikkerissä asian voisi kätevästi hoitaa.
1202
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

Esim. ALTER TABLE-määreellä asetetaan CONSTRAINT-ehtoon vyöryttävä null-arvon asetus määreellä:

ON DELETE SET NULL

Kun poistetaan isätaulusta rivi, vyöryttää null-arvon lapsitauluun riviä vastaavan viiteavainkenttään.

Äänestä

Kommentoi aloitusta


Jussi kirjoitti:

Pitäsisi poistaa isätaulusta rivi, johon on lapsitaulussa viittaus, pitäisi ensin merkitä lapsitauluun ko. rivin viiteavaimeen null-arvo,
jotta isätaulussa rivin poisto onnistuu. Jos näin ei tee TKHJ-herjaa.

Lapsitaulun vastaavia rivejä tarvitaan myöhemmin joten null-arvot sallitaan viiteavaimiin, kun isätaulusta poistetaan rivejä.

Miten tämä kannattaisi SQL:ssä toteuttaa trikkerinä vaiko proseduurina?

Trikkerin kohdalla en tiedä miten kohdistaisi oikeaan riviin, pitäisi siis ymmärtää että ennen poistoa merkkaa oikeaan lapsitaulun riviin viiteavaimeen null-arvon.

Kun tehdään delete, ei ilmeisesti ole trikkerissä keinoa kohdistaa isätaulun perusavainta vastaava lapsitaulun rivi.

Proseduurissa tämä käy, välittämällä ensin proseduurille parametrina perusavain, joka siis proseduurissa on sekä update:lle että deletelle sama parametriarvo, ensin tehdään vain update ja arvoksi null ja sen jälkeen delete, jolloin isätaulusta lähtee rivi pois, kun ei ole enää viittausta.

Tietääkö joku mitään keinoa miten trikkerissä asian voisi kätevästi hoitaa.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu