Portál AbcLinuxu, 19. dubna 2024 02:59


Dotaz: MySQL "symlink" tabulky

24.10.2009 11:31 hcore
MySQL "symlink" tabulky
Přečteno: 317×
Odpovědět | Admin
Resim zajimavy problem. Mam tabulku uzivatele(sloupce: jmeno, heslo), dale mam nekolik ostatnich tabulek, ktere vyuzivaji dalsi aplikace. Vsechny maji spolecne to, ze ve vsech se nachazi sloupce jmeno a heslo. Ja bych chtel nejak nalinkovat vsechny ostatni tabulky na tabulku uzivatele, proste aby vsechny pouzivaly stejne heslo. Spojit tabulky by se dalo na zaklade sloupce jmeno. Problem je, ze to potrebuju udelat pro aplikace transparentne v mysql, protoze ne vsechny aplikace mohu donutit spojovat tabulky. Umi nejak mysql takhle "nalinkovat" jeden udaj z tabulky do vsech ostatnich?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.10.2009 11:34 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vlastne potrebuju trvale do jakekoliv tabulky ve sloupci heslo propasovat tenhle dotaz: select `heslo` from `uzivatele` where `jmeno`=...
24.10.2009 11:51 ApoC
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
To co chcecte je IMHO kravina.

Pokud ne vsechny aplikace nedonutite spojovat tabylky, jak je donutite nacitat a pouzivat extra data z takto "nalikovaneho" sloupce? o.O

Kdyz uz chcete agregovat vice tabulek do jedne, muzete zkusit pouzit view.
24.10.2009 12:15 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Ja je nechci donutit pouzivat extra data. Chci aby to pro ne bylo absolutne transparentni. Aplikace by nic nevedela a o vse by se starala MySQL.
24.10.2009 13:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přejmenujte ty původní tabulky pro další aplikace na nějaké interní jméno, a místo těch původních tabulek vytvořte pohledy (view), které budou mít stejnou strukturu, jako původní tabulky, a budou obsahovat potřebné údaje. Pokud aplikace potřebují data v té původní tabulce i měnit, budete muset použít pohledy, nad kterými se dá dělat i INSERT, UPDATE a DELETE – nevím, zda to MySQL umí, v PostgreSQL se to dělá podle pravidel (rules) přiřazených pohledům, kdy se třeba INSERT provedený na pohledu přetransformuje na INSERTy do příslušných tabulek.
24.10.2009 20:16 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Hm.

#1395 - Can not delete from join view 'pokusnadb.view_users'
24.10.2009 20:50 jekub
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Hm.

A číst umíte? INSERT, UPDATE a DELETE – nevím, zda to MySQL umí

Víte co, vytvořte triggery (ale nevim, zda to MySQL umí), které změny provedou ve všech tabulkách. Je to sice prasárna, ale co už s váma.
24.10.2009 21:59 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Jo číst umím. To hm bylo myšleno spíš jako ach jo, protože jsem našel v mysql manuálech, že tohle možný není, takže hm, zvolil jsem si asi špatnou databázi :-).
Heron avatar 24.10.2009 22:23 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Spíše špatné DB schéma. To co chcete se dá krásně, rychle a hlavně správně řešit cizím klíčem do tabulky uživatelů a JOINem při SELECTu.
24.10.2009 22:44 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Za to schéma nemůžu :-). Je to několik aplikací, pro které chci používat stejné přihlašovací údaje(např. joomla). Úplně by pomohlo nějaké nahrazování dotazu, něco jako když bude na ten view puštěný select nebo insert, tak se to automaticky spustí na jiné mnou definované tabulce.
24.10.2009 22:45 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Asi bych na to mohl aplikovat trigger, který to transparentně zapíše do jiné tabulky a pak dotaz přeruší. Půjde to?
24.10.2009 23:48 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Hm, tak to vypadá že nemohu vytvořit triggery nad view.
25.10.2009 09:34 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Triggery vytvořte nad tabulkami – když uživatel změní heslo v jedné tabulce, změna se pomocí triggerů automaticky propíše do ostatních. Ale pozor na zacyklení triggerů. Případně můžete sledovat změnu pouze nad hlavní tabulkou, pak se ale uživatelé možná budou divit, proč jim nefunguje změna hesla třeba z CMS.
25.10.2009 11:48 hcore
Rozbalit Rozbalit vše Re: MySQL "symlink" tabulky
Diky. Taky me ted napadlo neco podobnyho. Asi vytvorim trigger nad tou hlavni tabulkou, ktery bude aktualizovat hesla do vsech ostatnich a dalsi triggery nad temi ostatnimi tabulkami, ktere budou aktualizovat heslo z hlavni tabulky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.