
SQL pomocné proměnné, trigger
Ahoj,
mám datový model ve kterém mám tabulku ZBOZI s atributem pocet_ks_na_sklade a potom mám tabulku "nakupuje", kde je atribut pocet_ks_koupeno.
Teď bych potřeboval příkaz do SQL, pravděpodobně pomocná proměnná nebo trigger, aby se opravdu odečítalo z pocet_ks_na_sklade - pocet_ks_koupeno a databáze teda byla pořád aktuální, nějaké rady?
Díky!
Tohle se řeší v uložené proceduře a ještě zapouzdřené do transakce, abys měl jistotu, že se buď oba příkazy provedou nebo že se neprovede žádný.
Provedeš zápis do tabulky s nakupem a následně upravíš množství v tabulce se stavem skladu.
Trigger sice řešení je, ale čím víc triggerů tam dáš, tím větší to bude mít dopad na výkon => pokud můžeš, tak se triggerům vyhýbej.
Pak by ses měl zamyslet nad názvy tabulek. "Zboží" je obvykle název pro číselník, ne pro stav skladu. Skladů může být několik a pak to zboží bude úplně zavádějící.
O názvu "nakupuje" už vůbec nemluvím. Slovesem se objekty nepojmenovávají. U tebe by to mělo být spíš Nakupy, lépe Prijmy, protože jsou to příjmy do skladu.
Predstav si, ze budes mit stovky tabulek a pak budeš hledat, kam se zapisují příjmy do skladu. Napadne tě po roce, že to bude v tabulce "nakupuje"? Pokud chceš, aby to vypadalo profesionálněji (to platí i pro domácí úkol), vymysli si nějaký systém označování. Třeba všechny číselníky budou začínat Cis, všechny věci se skladem (příjmy, výdeje, stavy, inventury) pak Skl apod.
Takze pak budeš mít:
CisZbozi - ciselnik s položkami
SklPrijem - příjmy do skladu
SklStav - stav skladu
atd.
Když se na to pak koukneš v nějakém správci databáze, uvidíš vše, co spolu souvisí pěkně pohromadě
Co sa tohto pripadu tyka, tak trigger tu naozaj nema co hladat.
Kazdopadne, triggre maju svoje opodstatnenie. Veta "pokud můžeš, tak se triggerům vyhýbej" je velmi vseobecna.
Ano, veta je vseobecna. Znamena triggerum se vyhybej, pokud to nejde udelat jinak.
Pokud to jinak (jednoduseji) udelat nejde, pak ma jeho pouziti opodstatneni
Nechci slovíčkařit, ale nemělo by místo slova "nejde" být "jde"? To by zcela měnilo smysl a podle mě by to pak bylo správně:
Ty jsi tu větu otočil:
Triggerum se vyhybej, pokud to jde udelat jinak.
Pokud to jinak (jednoduseji) udelat nejde, pak ma pouziti triggeru opodstatneni
Původní věta s "jde" nemá smysl:
Pokud to jinak (jednoduseji) udelat jde, pak ma pouziti triggeru opodstatneni
Nic jsem neotočil... Jenom jsem upravil větu, aby dávala smysl.
Ta druhá věta je v pořádku, tam jsem nic neměnil:
Ale první věta má mít význam takový, že se má triggerům vyhýbat, za předpokladu, že to jde udělat nějak jinak...
Promiň, oči mi už neslouží, spát mi nechutná, jíst mi nechutná. To jsem se zas unavila, unavila...
... a ještě si navíc pleteš světové strany!
A tím bych tento Tvůj politováníhodný omyl uzavřel. 
Se stranami jsem měl vždy problém. Proto jsem zůstal nestraníkem.
Chtěl jsem k tobě zajít na návštěvu, tak jsem vyrazil na východ, na Bučovice. Šel jsem dlouho, dlouho jsem i plaval a Hrom do Police pořád nikde. Nakonec jsem zase došel domů z druhé strany od Brna...