Obsah
Advanced Mysql - spouštění programováníSpouštěče je objekt v databázi, který provádí akci, když v databázi došlo k operaci nebo události.
Například při prodeji vstupenek slevujeme z dostupného místa.
Obecný kód je
VYTVOŘTE SPOUŠTĚČ název spouště
{PŘED | DESPUES DE}
// Bude provedeno před nebo po události
{VLOŽIT | AKTUALIZACE | VYMAZAT}
// akce nebo událost, která spouští spoušť
ON tablename
// název tabulky, která událost ovlivnila
ZA KAŽDÝ ŘAD
sql prohlášení, které má být provedeno
Vytváříme příklad prodeje vstupenek na akci nebo produkt na skladě. Chcete -li to vyzkoušet, můžete použít phpmyadminn nebo jakýkoli software, který podporuje uložené procedury a spouště.
Vytváříme databázi
VYTVOŘIT DATABÁZI `prodej`
Vytvoříme 2 tabulky
Stůl pro uložení prodaných vstupenek
VYTVOŘIT TABULKU `vstupenky` (
`id` int (10) NOT NULL AUTO_INCREMENT,
`idevent` int (11) NOT NULL,
`nroticket` int (11) NOT NULL,
PRIMARY KEY (`id`)
) MOTOR = VÝCHOZÍ CHARSET MyISAM = latin1 AUTO_INCREMENT = 1;
Tabulka pro uložení dostupnosti vstupenek na určitou událost
VYTVOŘIT TABULKU, POKUD NEJSOU K DISPOZICI `zásoby` (
`idevent` int (10) NOT NULL,
`stockactual` int (10) NENÍ NULL
) MOTOR = VÝCHOZÍ CHARSET MyISAM = latin1;
VYTVOŘIT TABULKU `události` (
`idevent` int (10) NOT NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
`date` date NOT NULL,
PRIMARY KEY (`idevent`)
) MOTOR = VÝCHOZÍ CHARSET MyISAM = latin1 AUTO_INCREMENT = 1;
Spoušť vytváříme jako sql dotaz, v tomto případě používáme bezplatný software HEIDISQL, NOVÉ prohlášení. Název_sloupce
a označuje, které pole spouštěcí operace použijeme při provádění v tomto případě události, pokud jich je více, vždy je používám s NOVINKOU vpředu,
VYTVOŘTE SPOUŠTĚČ `update_stock` PO VLOŽENÍ ON` lístků`
PRO KAŽDÉHO
ŘÁDEK
AKTUALIZACE skladových zásob stockactual = stockactual -1 WHERE idevent = NEW.idevent
Spustíme příkaz SQL a uvidíme, že aktivační událost byla skutečně vytvořena:
Jako příklad vložíme do tabulky 500 lístků, které jsou k dispozici na událost, zde nebude žádná odpověď ze spouště, protože ji vytvoříme, aby byla provedena, pokud dojde k vložení do lístků na stůl.
VLOŽTE DO HODNOT „prodejů“ („eventide“, „aktuální sklad“) HODNOTY („1“, „500“);
Nyní zkusme kouzlo spouštěčů
Předpokládejme, že prodáme lístek číslo 100 na událost 1 a vložíme prodej do databáze vstupenek
VLOŽTE DO LÍSTKŮ (idevent, nroticket) HODNOTY ('1', '100');
Podívejme se, co se stalo v tabulce zásob, a uvidíme, že zásoby na tuto událost mají nyní k dispozici 499 vstupenek, protože vložka do tabulky lístek Střílím a spouštím tygra update_stock.
Použití této metodiky umožňuje transparentnost provádění jak pro uživatele, tak pro programátora, s vědomím, že akce bude provedena, pokud ji spustí jiný, a tím se vyhnete rutinním úkolům, jako je aktualizace zásoby v případě prodeje, představte si to, pokud je prodej trh s tisíci produkty, vidíme, jak s několika řádky kódu vyřešíme velký problém.
Dalším příkladem může být odebrání produktu ze skladu a odebrání zásob
VYTVOŘTE SPOUŠTĚČ `Lower_products` PO DELETE ON` products`
PRO KAŽDÉHO
ODSTRANIT ZE SKLADU KDE productid = NEW.productid
ŘÁDEK
Možnosti jsou nekonečné a můžete jít hluboko do složitějších situací, spouště jsou skvělým doplňkem uložených procedurLíbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod