Autor Zpráva
mackopu
Profil
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
mackopu
Treba ti to pomuze, treba taky ne.
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=73 816
Kajman_
Profil *
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0