Autor | Zpráva | ||
---|---|---|---|
Luksa Profil * |
#1 · Zasláno: 26. 10. 2009, 15:15:57
V promenne tid mam ID tematu, ktery chci smazat. Jak tedy smazat data z tabulky temata a zaroven data z tabulky vzkaz, ktera obsahuje sloupec id_tematu?
Toto mi smaze jen tema z tabulky temata $sql = "DELETE FROM temata WHERE tid ='$id'"; A ted bych potreboval neco ve smyslu: And DELETE FROM vzkaz WHERE id_tematu ='$id' Diky |
||
Luksa Profil * |
#2 · Zasláno: 26. 10. 2009, 15:37:33
A nebo to lze udelat lepsim navrhnutim tabulek?
Mam tabulku VZKAZ - VID,DATUM,VZKAZ,UZIVATEL,ID_TEMATU a tabulku TEMATA - TID,TEMA kde TEMATA.TID == VZKAZ.ID_TEMATU A chtel bych dosahnout smazani vsech vzkazu, ktere jsou v tematu, ktere dam smazat. |
||
Kajman_ Profil * |
#3 · Zasláno: 26. 10. 2009, 16:30:39
Mazat naráz možná takto
delete from t, v using temata t left join vzkaz v on t.tid=v.id_tematu where t.tid='$id' U innodb tabulek je možno nastavit cizý klíče. A ty nastavit tak, že se při smazání primárního klíče, položky samy odstraní. |
||
Luksa Profil * |
#4 · Zasláno: 26. 10. 2009, 17:01:13
Kajman:
Nastavil jsem cizi klice, ale vzkazy se mi nesmazou. CREATE TABLE temata ( tid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, tema VARCHAR(100) NOT NULL ) CREATE TABLE vzkaz ( vid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, datum VARCHAR(40) NOT NULL, vzkaz VARCHAR(1000) NOT NULL, uzivatel VARCHAR(20) NOT NULL, id_tematu INTEGER NOT NULL, FOREIGN KEY (id_tematu) REFERENCES temata (tid) ) $sql = "DELETE FROM temata WHERE tid ='$id'"; Tema se smaze z DB smaze, ale vzkazy v ni zustanou... |
||
Luksa Profil * |
#5 · Zasláno: 26. 10. 2009, 17:47:47
Zkusil jsem ON DELETE CASCADE, ale ani tak se vzkazy nesmazou
CREATE TABLE temata ( tid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, tema VARCHAR(100) NOT NULL ) CREATE TABLE vzkaz ( vid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, datum VARCHAR(40) NOT NULL, vzkaz VARCHAR(1000) NOT NULL, uzivatel VARCHAR(20) NOT NULL, id_tematu INTEGER NOT NULL, FOREIGN KEY (id_tematu) REFERENCES temata (tid) ON DELETE CASCADE ) $sql = "DELETE FROM temata WHERE tid ='$id'"; Prosim... |
||
Luksa Profil * |
#6 · Zasláno: 26. 10. 2009, 22:22:54
Prosim Vas, co je spatne?
|
||
Luksa Profil * |
#7 · Zasláno: 27. 10. 2009, 16:56:30
Nikdo nevi? Snad sem to popsal spravne + ukazka...
|
||
Luksa Profil * |
#8 · Zasláno: 28. 10. 2009, 21:21:09
Prosim Vas, stale na to nemuzu prijit. Nevi nekdo?
|
||
Joker Profil |
#9 · Zasláno: 28. 10. 2009, 21:31:58
Luksa:
A jsou ty tabulky InnoDB? Dotaz, který psal Kajman v #3 nefunguje? |
||
Luksa Profil * |
#10 · Zasláno: 28. 10. 2009, 21:40:28
Joker:
Ano jsou. Tabulky jsou presne vytvoreny takto: CREATE TABLE temata ( tid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, tema VARCHAR(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; CREATE TABLE vzkaz ( vid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, datum VARCHAR(40) NOT NULL, vzkaz VARCHAR(1000) NOT NULL, uzivatel VARCHAR(20) NOT NULL, id_tematu INTEGER NOT NULL, FOREIGN KEY (id_tematu) REFERENCES temata (tid) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; Ten dotaz jsem nezkousel, rad bych spise vyuzil cizich klicu. Jinak delam vse spravne? |
||
Luksa Profil * |
#11 · Zasláno: 28. 10. 2009, 21:51:14
Tak asi ne, ted jsem zjistil, ze MySQL na ic.cz vubec innoDB nepodporuje...Tak to bude tim.
|
||
Časová prodleva: 14 let
|
0