Sadržaj
Napredni Mysql - programiranje okidačaOkidači su objekt unutar baze podataka koji izvršava radnju kada se u bazi podataka dogodila operacija ili događaj.
Primjer kada se proda ulaznica, popustimo na slobodno mjesto.
Opći kod je
CREATE TRIGGER ime okidača
{PRIJE | DESPUES DE}
// Izvršit će se prije ili poslije događaja
{UMETNI | AŽURIRAJ | IZBRISATI}
// radnja ili događaj koji pokreće okidač
ON naziv tablice
// naziv tablice koja je utjecala na događaj
ZA SVAKI RED
sql izraz koji treba izvršiti
Mi stvaramo primjer prodaje ulaznica za događaj ili proizvod na skladištu. Da biste to provjerili, možete koristiti phpmyadminn ili bilo koji softver koji podržava pohranjene procedure i okidače.
Mi stvaramo bazu podataka
CREATE DATABASE `prodaja`
Izrađujemo 2 tablice
Stol za spremanje prodanih karata
CREATE TABLE `ulaznice` (
`id` int (10) NIJE NULL AUTO_INCREMENT,
`idevent` int (11) NIJE NULL,
`nroticket` int (11) NIJE NULL,
PRIMARNI KLJUČ (`id`)
) MOTOR = ZNAČAJNA KARTA MISISAM = latin1 AUTO_INCREMENT = 1;
Tablica za spremanje dostupnosti ulaznica za određeni događaj
IZRADI TABLICU AKO NE POSTOJI `zaliha` (
`idevent` int (10) NIJE NULL,
`stockactual` int (10) NIJE NULL
) MOTOR = ZNAČAJNA KARIZA MyISAM = latin1;
CREATE TABLE `događaji` (
`idevent` int (10) NIJE NULA AUTO_INCREMENT,
`događaj` int (11) varchar (200),
datum "datum" NIJE NULL,
PRIMARNI KLJUČ (`idevent`)
) MOTOR = ZNAČAJNA KARTA MISISAM = latin1 AUTO_INCREMENT = 1;
Okidač stvaramo kao sql upit, u ovom slučaju koristimo besplatni softver HEIDISQL, novu naredbu.column_name
a označava koje polje okidačke operacije ćemo koristiti u izvođenju u ovom slučaju, ako ih ima više, uvijek ih koristim s NOVOM ispred,
CREATE TRIGGER `update_stock` NAKON UMETANJA` ulaznica`
ZA SVAKOGA
RED
AŽURIRAJ SET STOCK stockactual = stockactual -1 WHERE idevent = NEW.idevent
Izvršimo SQL izraz i vidimo da je okidač doista stvoren:
Kao primjer u tablicu ubacujemo 500 ulaznica dostupnih za događaj, ovdje neće biti odgovora od okidača jer ga stvaramo da se izvrši ako dođe do umetanja u stolne ulaznice.
INSERT INTO `sales``stock` (` Eventide`, `current stock`) VRIJEDNOSTI ('1', '500');
Pokušajmo sada sa čarolijom okidača
Pretpostavimo da prodamo kartu broj 100 za događaj 1 i ubacimo prodaju u bazu ulaznica
INSERT INTO ulaznice (idevent, nroticket) VRIJEDNOSTI ('1', '100');
Pogledajmo što se dogodilo u tablici zaliha i vidjet ćemo da zalihe za ovaj događaj sada imaju na raspolaganju 499 karata, jer uložak u tablici ulaznica Pucam i trčim tigra update_stock.
Korištenje ove metodologije omogućuje transparentnost izvršavanja i korisniku i programeru, znajući da će se radnja izvršiti ako je drugi pokrene i tako izbjeći rutinske zadatke poput ažuriranja zaliha u slučaju prodaje, zamislite ovo ako je prodaja tržištu s tisućama proizvoda, vidimo kako s nekoliko redaka koda rješavamo veliki problem.
Drugi primjer može biti uklanjanje proizvoda iz skladišta i uklanjanje zaliha
CREATE TRIGGER `Lower_products` AFTER DELETE ON` products`
ZA SVAKOGA
IZBRIŠI SA zaliha GDJE je productid = NEW.productid
RED
Mogućnosti su beskrajne i možete zaći duboko u složenije situacije, okidači su izvrsna nadopuna pohranjenim proceduramaJe li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod