Autor Zpráva
MagicPowa
Profil
Zdravím, v MySQL databázi pomocí phpMyAdmina potřebuju využít TRIGGER na následující situaci. Mám dvě tabulky:

UŽIVATELÉ - id_uzivatel, jmeno, prijmeni, viditelny (0-ne, 1-ano)
1 | Jméno | Příjmení | 1
2 | Jméno | Příjmení | 1

KOMENTÁŘE - id_komentar, id_uzivatel, text, viditelny (0-ne, 1-ano)
1 | 1 | text | 1
2 | 1 | text | 1
3 | 2 | text | 1

Potřeboval bych TRIGGER, který udělá, že pokud uživateli s ID 1 dám viditelnost 0, tak se všechny komentáře, který mají ID_UZIVATEL 1 skrejou, tudíž dostanou 0 a tabulka komentáři by vypadala takto:

KOMENTÁŘE - id_komentar, id_uzivatel, text, viditelny (0-ne, 1-ano)
1 | 1 | text | 0
2 | 1 | text | 0
3 | 2 | text | 1

Napsal jsem si tedy TRIGGER:
CREATE TRIGGER skryvani AFTER UPDATE ON uzivatele FOR EACH ROW UPDATE komentare SET komentare.viditelnost = '0' WHERE uzivatele.id_uzivatel = komentare.id_uzivatel


TRIGGER prošel bez problémů ale pokud udělám nějakou změnu, ve zmiňovaných tabulkách, tak mi to vypíše, že tabulka uzivatele neexistuje.
Zkoušel jsem to ještě řešit pomocí INDEX sloupců a ON UPDATE, jenomže to přepisovalo viditelnost u všech uživatelů a ne jen u konkrétního ID_UZIVATEL.

Díky za pomoc.
Kajman_
Profil *
WHERE NEW.id_uzivatel = komentare.id_uzivatel AND NEW.viditelny=0
MagicPowa
Profil
CREATE TRIGGER skryvani AFTER UPDATE ON uzivatele FOR EACH ROW UPDATE komentare SET komentare.viditelnost = '0' WHERE NEW.id_uzivatel = komentare.id_uzivatel AND NEW.viditelny = '0'


Funguje výborně, ale pokud bych chtěl, opak tedy zobrazení, tak založím TRIGGER

CREATE TRIGGER zobrazeni AFTER UPDATE ON uzivatele FOR EACH ROW UPDATE komentare SET komentare.viditelnost = '1' WHERE NEW.id_uzivatel = komentare.id_uzivatel AND NEW.viditelny = '1'


ale napíše to, že TRIGGER už existuje. Jakto? Když jsem ho pojmenoval jinak.
Kajman_
Profil *
Ale na to stačí jediný (víc pro danou událost asi povoleno není) trigger...
...SET komentare.viditelnost=NEW.viditelny WHERE NEW.id_uzivatel = komentare.id_uzivatel

Ale přiznám se, že mi uniká význam takového flagu. Při vypisování komentářů se přece můžete podívat, zda uživatel není zakázaný a pak nezobrazovat i nezákazaný komentář.

Pokud ten údaj v tabulce komentare je vždy podle uživatele, tak jde o redudnaci dat a není třeba. Pokud ten údaj umožňuje jemné ladění, tak při úpravě uživatele přijdete o všechny upravené flagy zobrazování u jeho příspěvků.
MagicPowa
Profil
To, že uniká význam se ani nedivím, jde mi totiž o pochopení toho principu. Využívám to jinde než u komentářů a uživatelů. Každopádně děkuji moc za pomoc frčí to dobře.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0