Diskuze: ja kna trigger ?
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Když napíšeš
UPDATE reg_param SET statParam = 0;
tak nastavíš tu hodnotu u všech řádků.
Musel bys tam mít
UPDATE reg_param SET statParam = 0 WHERE identifikatorradku = nejakahodnota;
Jak se ti vůbec dostává do toho "statParam" jiná hodnota než 0?
Díky za odpověď.
Selskym rozumem mi je jasný, že tam ten identifikátor řádku nějak chybí.
Ale nevím kde ho vzít. Pochopil jsem Trigger tak, že on za mně prohlídne
celý sloupec a tam kde je hodnota různá od 0, tak provede to co je v tom IFu.
Tudíž jsem se domníval, že ví, v jakém řádku je a tak jej zmodifikuje.
Jenže tomu tak není. Takže můj problém je, že nevím, kde ten idParam,
tedy id řádku vzít.
Tak a jak se mi tam dostane jiná hodnota ? Buď si jí tam nacpu třeba přes phpMyAdmin nebo prakticky mám webovou stránku, kde mám tlačítka NAČTI a ZAPIŠ. NAČTI po stisknutí zapíše hodnotu 1 a ZAPIŠ hodnotu 2. To co se děje k tomu dál ve stávajícím systému, zjednodušeně: zakomunikuje s nějakým jednočipem a ten mi vrátí hodnotu parametru a nebo nevrátí a mám timeout. Takže hodnota toho statusu má asi 7 stavů.
Podle čeho tedy pracuješ s konkrétním záznamem v tabulce? Nějak ten záznam přece musíš najít a vybrat, ne?
Mno tím mým současným způsobem prohledávám celý sloupeček řádek po řádku. Tuto funkci volám v C každou sekundu. Což mi přijde jako mrhání strojovým časem. Tak jsem si myslel, že právě TRIGGER příkazem FOR EACH ROW to udělá za mně a že mi rovnou v příslušném řádku tou podmínkou "IF něco" tu hodnotu nastaví na 0 a ještě mi zavolá nějakou mojí funkci v C.
Zobrazeno 5 zpráv z 5.