KEPLIN Docs

Triggerit

Sääntöjä, jotka ajetaan tietokannan sisällä jokaisen lisäyksen, muutoksen tai poiston yhteydessä — suunniteltuna visuaalisena kulkuna ja vietynä moottoriin.

Triggeri on sääntö, joka elää tietokannan sisällä ja laukeaa itsestään aina kun taulun riviä lisätään, muutetaan tai poistetaan. Se ei riipu siitä, kuka kirjoitti: tuli kirjoitus näytöltä, API:sta, skriptistä tai toisesta samaan tietokantaan kytketystä sovelluksesta, triggeri ajetaan.

Juuri se on triggerien puolesta puhuva argumentti — ja samalla se varovaisuus, jota ne vaativat: logiikka joka ajetaan ilman että kukaan kutsuu sitä, on logiikkaa jonka tapahtumista kukaan ei näe.

Missä triggerit elävät

Tietolähteen puussa, ryhmässä Ohjelmointi, kohteen Funktiot / proseduurit vieressä:

Puun Ohjelmointi-ryhmä: Funktiot / proseduurit ja Triggerit sekä kummankin lukumäärä.
Puun Ohjelmointi-ryhmä: Funktiot / proseduurit ja Triggerit sekä kummankin lukumäärä.

Triggerin napsauttaminen avaa sen työtilan välilehteen, kulku valmiiksi piirrettynä.

Nota

Kaikki tietokantamoottorit eivät tue näin suunniteltuja triggereitä. Alusta tarjoaa vain sen, minkä kytketty moottori osaa: jos Uusi triggeri ei näy tietolähteen valikossa, kyseinen moottori ei tue sitä. Alustan ulkopuolella luodut triggerit näkyvät listalla edelleen, merkittyinä tekstillä Ulkoinen triggeri — ei tue canvasia (vain SQL-muokkaus).

Tietolähteen toimintovalikko — se, mitä alusta tarjoaa luotavaksi, riippuu kytketyn tietokannan moottorista.
Tietolähteen toimintovalikko — se, mitä alusta tarjoaa luotavaksi, riippuu kytketyn tietokannan moottorista.

Triggerin luominen

  1. Vie hiiri tietolähteen päälle ja avaa valikko .
  2. Valitse Uusi triggeri. Avautuu valintaikkuna, jossa ovat triggerin perustiedot — kulku rakennetaan seuraavaksi canvasilla.
  3. Täytä:
Kenttä Mikä se on
Nimi Triggerin nimi tietokannassa. Ehdotettu käytäntö on trg_oma_taulu.
Taulu Vahdittava taulu.
Ajankohta BEFORE (ennen kuin rivi kirjoitetaan) tai AFTER (sen jälkeen).
Tapahtumat INSERT, UPDATE, DELETE — vähintään yksi. Jotkin moottorit hyväksyvät useita samassa triggerissä, toiset vain yhden.
  1. Vahvista painikkeella Luo ja avaa canvas.

Triggeri syntyy luonnoksena: se on jo olemassa alustalla, mutta sitä ei ole vielä viety tietokantaan. Niin kauan kuin se on luonnos, puu näyttää sen sellaisena.

Ajankohta ja tapahtumat käytännössä

Valinta Mihin
BEFORE INSERT/UPDATE Arvojen normalisointiin tai täydentämiseen ennen tallennusta — koodin muuttaminen isoiksi kirjaimiksi, johdetun kentän täyttäminen.
AFTER INSERT/UPDATE/DELETE Reagointiin jo tapahtuneeseen — historiarivin kirjoittaminen, summan päivittäminen toiseen tauluun.

Rivin arvot ovat käytettävissä tapahtuman mukaan: Uudet arvot (NEW) ovat olemassa INSERT- ja UPDATE-tapahtumissa; Vanhat arvot (OLD) näkyvät vain kun triggeri kuuntelee tapahtumia UPDATE tai DELETEINSERT-tapahtumassa ei ole vanhaa riviä näytettäväksi.

Triggerin canvas

Kulku piirretään canvasille, ja yläreunan vihje tiivistää eleen: vedä funktioita tai proseduureja puusta canvasille; kaksoisnapsauta laatikkoa määrittääksesi sen inputit ja outputit.

Canvasin yläpuolella olevassa palkissa on vasemmalta oikealle:

Painike Mitä se tekee
Asetukset Avaa uudelleen triggerin nimen, taulun sekä kohdat Ajankohta ja Tapahtumat.
(yhteenveto) Nimi, taulu, ajankohta ja tapahtumat, aina näkyvissä.
Lauseke Lisää kulkuun lausekesolmun.
Näytä SQL Näyttää käännetyn triggerin suorittamatta mitään.
Tallenna ja vie tietokantaan Tallentaa triggerin ja vie sen moottoriin.

Taulun laatikko — mikä tulee kulkuun

Canvasin ensimmäinen laatikko on taulu: siitä tulevat ulos sen rivin arvot, joka laukaisi triggerin. Kaksoisnapsauta sitä avataksesi kohdan Triggerin outputit ja valitaksesi, mitä tämä triggeri tarjoaa kululle: yksittäisiä sarakkeita, koko rivin (JSON) tai molemmat.

  • Uudet arvot (NEW) — rivi sellaisena kuin se jää.
  • Vanhat arvot (OLD) — rivi sellaisena kuin se oli.
  • Kummassakin tapauksessa voit yksittäisten sarakkeiden lisäksi tarjota koko rivin (JSON) — kätevää, kun halutaan antaa kaikki kerralla historiafunktiolle.

Jokaisesta valitusta ulostulosta tulee laatikkoon portti, joka on valmis yhdistettäväksi.

Funktiot ja proseduurit

Triggerin varsinaisen työn tekevät funktiot ja proseduurit, jotka ovat jo tietokannassa. Vedä ne puusta (Ohjelmointi ▸ Funktiot / proseduurit) canvasille: kustakin tulee laatikko, jossa on yksi parametri sisääntuloa kohti.

  1. Yhdistä taulun portti siihen parametriin, jota se syöttää — parametri alkaa näyttää tilaa yhdistetty.
  2. Yhdistämätön parametri jää oletusarvoonsa.
  3. Funktiot myös palauttavat arvon: paluuportti voi syöttää toista laatikkoa ja ketjuttaa vaiheita.
  4. Laatikon omassa valikossa on Poista kulusta.

Yhteyden purkamiseksi napsauta viivaa: Poistetaanko tämä yhteys? Parametri lakkaa saamasta tätä arvoa.

Lausekesolmut

Portin ja parametrin välillä arvo ei aina kelpaa sellaisenaan. Painike Lauseke lisää solmun, joka hioo tai muuntaa arvoja: määrittelet Inputit (painikkeella + input), yhdistät niihin portteja ja kirjoitat SQL-lausekkeen käyttäen merkintöjä {a}, {b}… yhdistetyille inputeille — esimerkiksi upper({a}) || '-' || {b}. Tulos tulee ulos solmun portista ja jatkaa minne haluat.

Kaksoisnapsauta solmua määrittääksesi sen (laatikko itse sanoo kaksoisnapsauta muokataksesi…, kun se on tyhjä).

SQL:n katselu ennen käyttöönottoa

Näytä SQL avaa esikatselun — Triggerin SQL (esikatselu) — ja siinä on olennainen huomautus: Käännetty nykyisillä muutoksillasi — mitään ei ole suoritettu. Tarkista ja ota käyttöön milloin haluat.

Se on turvallisuusaskel: näet täsmälleen, mitä tietokantaan ollaan luomassa, voit kopioida sen, näyttää sen moottorin ylläpitäjälle ja vasta sitten ottaa käyttöön. Samassa valintaikkunassa on painike Tallenna ja vie tietokantaan käden ulottuvilla.

Triggerin vieminen tietokantaan

Tallenna ja vie tietokantaan tekee molemmat asiat: tallentaa piirroksen ja luo triggerin moottoriin. Kun se onnistuu, alusta vahvistaa: Triggeri viety tietokantaan.

Ennen käyttöönottoa piirros tarkistetaan. Kieltäytymiset ovat suoria:

Viesti Mitä puuttuu
Anna triggerille nimi (Asetukset). Nimi.
Valitse taulu (Asetukset). Vahdittava taulu.
Valitse vähintään yksi tapahtuma (Asetukset). Vähintään yksi tapahtumista INSERT/UPDATE/DELETE.
Canvasilla ei ole yhtään funktiota tai proseduuria. Tyhjä kulku ei tee mitään — vedä canvasille vähintään yksi funktio.
Kulussa on lausekesolmu, jolle ei ole määritelty lauseketta. Tyhjä lausekesolmu.

Atenção

Triggerin käyttöönotto on kirjoitus kytkettyyn tietokantaan, ja se vaikuttaa välittömästi kaikkiin kyseisen taulun kirjoituksiin — myös niihin, jotka olivat jo käynnissä. Tuotantojärjestelmässä katso SQL ensin ja ota käyttöön sovittuna ajankohtana.

Triggerin poistaminen

Puussa triggerin valikossa on Poista, ja se vahvistetaan — Poistetaanko triggeri ”…”? — ja se on lopullista: triggeri poistuu tietokannasta.

Sen katsominen, mitä tietokannassa on

SQL-konsoli mallikaavion alapuolella on paikka, jossa triggerin vaikutus varmistetaan: kirjoita kysely, Suorita, ja katso oikeat rivit. Sitä kautta myös tutkitaan sitä, mitä siellä oli jo ennen sinun tuloasi.

SQL-konsoli mallin alapuolella: kirjoitetaan vasemmalle, Suorita ajaa, ja tulos ilmestyy oikealle.
SQL-konsoli mallin alapuolella: kirjoitetaan vasemmalle, Suorita ajaa, ja tulos ilmestyy oikealle.

Triggeri, skripti vai työnkulku?

Kaikki kolme automatisoivat, ja oikea valinta säästää kuukausien sekaannuksen:

Työkalu Ajetaan… Hyvä tähän
Triggeri Tietokannan sisällä, jokaisella taulun kirjoituksella. Säännöt, joiden on pädettävä kaikkiin kirjoituksiin: historia, johdetut kentät, summat.
Skripti Tietokannan ulkopuolella: käsin, ajastettuna tai API:n vaiheena. Raskas työ, integraatiot, tiedostot, lähetykset — kaikki mikä kestää tai puhuu ulkomaailman kanssa.
Työnkulku Prosessina, jossa on vaiheita, päätöksiä ja ihmisen tehtäviä. Hyväksynnät, kierrokset joissa on ihmisiä välissä, odotukset.

Dica

Jos logiikka koskee dataa eikä se saa pettää, se on triggeri. Jos logiikka koskee liiketoimintaa ja jonkun on nähtävä sen tapahtuvan, se ei ole: skripti tai työnkulku jättävät merkinnän, ajetaan historian kanssa ja selittävät itsensä Radarissa.

Miksi ei…?

  • Miksi Uusi triggeri ei näy tietolähteen valikossa? Kytketty moottori ei tue canvasilla suunniteltuja triggereitä. Voit yhä luoda niitä SQL:llä, ja ne näkyvät puussa ulkoisina triggereinä.
  • Miksi triggeri sanoo edelleen olevansa luonnos? Se luotiin, mutta sitä ei ole vielä viety tietokantaan. Avaa se ja käytä painiketta Tallenna ja vie tietokantaan.
  • Miksi en näe kohtaa Vanhat arvot (OLD)? Triggeri ei kuuntele tapahtumia UPDATE eikä DELETE. INSERT-tapahtumassa ei ole vanhaa riviä.
  • Miksi en pysty yhdistämään porttia parametriin? Kaikissa yhteyksissä ei ole järkeä — varmista, että yhdistät ulostuloa (laatikon oikealla puolella) sisääntuloon (toisen laatikon vasemmalla puolella).
  • Miksi triggeri ei tee mitään? Kulku ilman funktioita ei tuota mitään työtä: kääntäjä hylkää sen. Tarkista myös AjankohtaBEFORE ja AFTER eivät näe samaa asiaa.
  • Miksi kirjoitukset hidastuivat triggerin luomisen jälkeen? Triggeri ajetaan jokaisella kirjoitetulla rivillä. Jos se kutsuu raskasta työtä, se työ tapahtuu nyt jokaisella lisäyksellä — silloin oikea paikka on ajastettu skripti.