Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 30. 4. 2008, 13:32:46
Mám databázi s nějakými daty:
CREATE TABLE IF NOT EXISTS `phorum_text` ( `id` int(11) NOT NULL auto_increment, `thread` int(11) default NULL, `author` varchar(50) default NULL, `email` varchar(50) default NULL, `subject` varchar(250) default NULL, `body` text, `date` int(10) default NULL, `latest` int(10) default NULL, `reply` char(1) default NULL, PRIMARY KEY (`id`) ); INSERT INTO `phorum_text` (`id`, `thread`, `author`, `email`, `subject`, `body`, `date`, `latest`, `reply`) VALUES (1, 0, 'Dalibor', '', 'Jsme lhostejní?', 'Nějaký text', 1209480777, 1209483438, 'Y'), (2, 1, 'Syslik,', '', 'Re: Jsme lhostejní?', 'Nějaký text', 1209483147, 0, 'N'), (3, 2, 'Dalibor', '', 'Re: Re: Jsme lhostejní?', 'Nějaký text', 1209483261, 0, 'Y'), (4, 3, 'Syslik,', '', 'Pro Dalibora', 'Nějaký text', 1209483438, 0, 'N'); Poradím si s mazáním jednotlivých příspěvků, jak ale smazat celé vlákno naráz včetně souvisejících reakcí? |
||
peta Profil |
#2 · Zasláno: 30. 4. 2008, 13:40:03 · Upravil/a: peta
mackopu
Treba ti to pomuze, treba taky ne. http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=73 816 |
||
Kajman_ Profil * |
#3 · Zasláno: 1. 5. 2008, 07:31:05
Nejjednodušší možná bude použití cizích klíčů nastavených na mazání řádků, kterého ho obsahují, při smazání klíče primárního.
|
||
Mastodont Profil |
#4 · Zasláno: 1. 5. 2008, 07:44:06 · Upravil/a: Mastodont
mackopu
Nechápu, proč se druhé pole jmenuje thread (vlákno), když v něm v reakcích na původní příspěvek zadáváš jiné hodnoty. Všechny příspěvky vlákna by měly mít hodnoty stejné. Já bych u každého příspěvku ukládal příznak ve tvaru A-B-C-... - výchozí příspěvek prvního vlákna by tu měl 1, první reakce 1-1, reakce na první reakci 1-1-1, druhá reakce 1-2, výchozí příspěvek druhého vlákna 2 apod. (normální materializovaná cesta) - pak není těžké sestavit dotaz, který pro určitý ID komentáře najde jeho příznak a odmázne všechny následné komentáře spolu s ním. Něco jako delete from table where left(priznak, length(X)) = X // X = příznak příspěvku, od kterého mažu Výhodou je to, že takto se dá mazat nejen celé vlákno, ale i jeho části. |
||
Časová prodleva: 16 let
|
0