Utløserprogrammering i MySQL
Utløser eller ofte ringt inn programmering av "triggere" De er en type objekt som finnes i databaser. Når en bestemt hendelse eller operasjon utføres i databasen, utfører utløseren vår automatisk en handling som vi tidligere har programmert den for.
De utløser de aktiveres automatisk når INSERT, DELETE eller UPDATE operasjoner utføres, som henholdsvis settes inn, slettes eller oppdateres. Når vi utfører noen av disse handlingene, utfører våre utløsere en instruksjon eller en instruksjonsblokk som de tidligere er programmert for.
De strukturen til en trigger i MySQL er det neste:
FORSTØRRE
[DEFINER = {bruker | CURRENT_USER}]Denne delen av koden forteller databasesjefen hvilken bruker som har rettigheter til å kunne ringe utløserne våre når DML -hendelser skal oppstå. Standardverdien er CURRENT_USER.
For å velge navnet på utløseren vår, er det et veldig godt kriterium å følge som er: Legg først navnet på tabellen, deretter initialen til DML -operasjonen, (I for Sett inn, D for Slett eller U for oppdatering) og deretter initial fra utførelsesøyeblikket (enten A for etter eller B for før).
FØR | DESPUES DEDet indikerer bare øyeblikket når utløseren vår vil bli utført, det vil si hvis utløseren utløses før DML -hendelsen (før) eller etter (etter).
SETT INN SLETT | OPPDATERDen forteller oss hva som vil være setningen vi vil bruke for å utløse utløseren vår, Sett inn for å legge inn data, Slett for å slette den eller Oppdater for å endre den.
PÅ bordnavnDet angir tabellen som er knyttet til utløseren vår.
FOR HVER RADDet forteller oss bare at utløseren kommer til å bli utført for hver rad i tabellen vår som tidligere var definert i ON.
De siste kvl -uttalelse eller blokken med instruksjoner vil være setningen eller setningene som utløseren vår vil utføre når den trer i kraft.
Utløser praktisk eksempel
Nå vil vi se et praktisk eksempel på hvordan du kan programmere en trigger for å selge bussbilletter til en bestemt rute mens det er ledige seter.
Vi kan bruke hvilken som helst programvare som godtar utløsere og lagrede prosesser.
1. Vi lager en database:
2. på rad vi lager to tabeller i databasen vår. En av dem er hvor vi vil lagre billettene som er solgt, og den andre er opprettet slik at vi kan vite hvor mange billetter som er tilgjengelige for den gitte turen.
Her er tabellen som inneholder informasjon om antall solgte billetter:
Deretter lager vi tabellen der vi lagrer informasjonen om antall billetter som er tilgjengelige for hver bestemt reise:
3. nå vi lager bordet for å lagre de forskjellige turene:
Fjerde Etter å ha opprettet databasen og tabellene skal vi lage SQL -spørringen til utløseren, men før dette må vi vite hva som er NYE og GAMLE identifikatorer i utløserne.
For at utløseren vår skal være relatert til en eller flere spesifikke kolonner i tabellen, må vi bruke identifikatorene som er nevnt ovenfor NYE OG GAMLE.
GAMMEL: indikerer den gamle verdien til kolonnen
NY: den nye verdien den kan ta.
Som et eksempel: OLD.idtrip eller NEW.idtrip.
Med INSERT uttalelse Vi kan bare bruke den NYE identifikatoren fordi funksjonen som genereres med INSERT er å introdusere nye verdier til kolonnen eller kolonnene.
Hvis vi bruker SLETT uttalelse i dette tilfellet må vi bruke den gamle identifikatoren fordi med DELETE sletter vi verdier som allerede eksisterte tidligere.
På den annen side, hvis vi bruker UPDATE uttalelse Vi kan bruke GAMLE og NYE, siden vi kan referere til gamle eller nye verdier siden vi vil endre poster som allerede eksisterte for andre verdier.
Nå som vi forstår identifikatorene, ville sql -setningen se slik ut:
Hvis vi utfører sql -setningen i et program som støtter det, ville vi virkelig se det utløseren er opprettet.
For å se hvordan det fungerer, introduserer vi noen logiske verdier for en busstur, for eksempel:
Her har jeg lagt inn på turen med identifikasjonsnummer 1 at det er 45 seter tilgjengelig.
Etter dette selger vi en billett, for eksempel billetten som tilsvarer sete 14:
Når vi gjør denne spørringen, hvis vi går til feltet current_availability, vil vi se at 45 har endret seg til 44, siden utløseren 'update_availability' ble aktivert.
De fordelene ved å bruke utløsere er at forskjellige brukstilfeller kan programmeres og at databasens integritet opprettholdes, det vil si at det gir oss muligheten til å lage rutiner som utfører visse handlinger automatisk uten å måtte gjøre det manuelt. Det vil være veldig gyldig for validering av alle typer informasjon eller for å følge opp bevegelser av databasen.
Et annet veldig interessant eksempel som jeg nettopp nevnte i valideringene, er å bestemme myndighetsalder før du setter en setning, for eksempel:
Etter å ha sett eksemplene på å lage utløsere, må vi vite hvordan vi får tilgang til informasjonen om utløseren. Til dette bruker vi setningene:
For å se utløserne i databasen vår:
VIS TRIGGEREPå den annen side, hvis vi vil se informasjonen om utløseren som er opprettet for øyeblikket:
VIS OPPRETT TRIGGER student_BU_triggerTil slutt, etter å ha sett hvordan triggere opprettes og vises, skal vi se hva uttalelsen brukes til å eliminere en trigger som vi har i databasen vår.
For å gjøre dette må vi bare bruke den typiske slettekommandoen: miste.
DROP TRIGGER [IF_EXISTS] trigger_nameLikte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng