| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 30.09.07 Prihlásený: 30.11.11 Príspevky: 143 Témy: 37 | Napísal Feko: 14.03.2011 17:58 | |
|
Caute.
Potrebujem zmazat vsetky zaznami z tabulky, pri konkretnom ID(v mojom pripade id_matrialu1)
To nie je problem. Delet, where a dane IDcko.
Problem je, ze musim vymazat aj vsetky zaznamy s id_materialu2, s ktorym bol v danom vymazanom riadku skombinovany.
Teraz totiz vymazem vsetky zaznami, kde bolo id_matrialu1. Ostanu vsak v tabulke zaznami s id_matrialu2, ktore vsak uz nie su platne.
Ako by ste to riesili? Da sa nastavit nejaky spustac s nasledujucou logikou?
Ak sa maze zaznam s id_matrialu1=(napr.)5
vezme sa id_matrialu2 s ktorym je v danom zmazavanom zazname prepojeny
a vymazu sa vsetky zaznami so spominanym id_matrialu2
Za kazdy dotaz vopred vdaka.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 14.03.2011 20:30 | |
|
nepises o aku databazu sa jedna
|
|
Registrovaný: 30.09.07 Prihlásený: 30.11.11 Príspevky: 143 Témy: 37 | Napísal autor témy Feko: 14.03.2011 20:48 | |
|
ok, sorry. MySql. Pozeral som teraz aj taku moznost ako foreign key s cascade delete na samu seba (rekurzia). A samozrejme, dalo by sa to aj cez aplikaciu predchadzajucim selektom a dalsim deletom, ale naco to ak sa to da vybavit v samotnej databaze.
|
|
Registrovaný: 03.04.08 Prihlásený: 10.12.19 Príspevky: 4667 Témy: 37 Bydlisko: Trnava |
co tak si vyselectovat vsetky id a potom spravit v exceli jednoduchy delete (funkcia concatenate) a spustit ...
_________________ Hmmm .... Hrošíček ... [Homer] |
|
Registrovaný: 30.09.07 Prihlásený: 30.11.11 Príspevky: 143 Témy: 37 | Napísal autor témy Feko: 15.03.2011 13:06 | |
|
jj, uz som to podobne vyriesil. Naplnil si pole vsetkymi id_materialu2 s ktorymi bol vymazavany material1 spojeny a rozsiril som delet podmienku. Len som to chcel vyriesit priamo v DB. Aj triggrika som si spravil, ale nefungoval.
Kód: delimiter $$ CREATE TRIGGER MaterialEdit_Trigger AFTER delete ON fixacia FOR EACH ROW BEGIN DELETE FROM fixacia WHERE id_materialNakup = OLD. id_materialNakup; END$$ delimiter ;
Vyhadzovalo chybu (zabudol som jej cislo). Islo o to ze sa spustal znovu ten triger v jeho vlastnom tele.
Tak som si zvolil lahsiu cestu a vykaslal sa na to. Co ma mrzi, rad by som to uz zacal vyuzivat.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 15.03.2011 14:16 | |
|
nebolo lahsie spravit DELETE FROM fixacia WHERE id_materialNakup in (select id_materialNakup from fixacia where id_matrialu1=(napr.)5 ) ? a potom spravit ten povodny delete ?
|
|
Registrovaný: 30.09.07 Prihlásený: 30.11.11 Príspevky: 143 Témy: 37 | Napísal autor témy Feko: 15.03.2011 19:46 | |
|
ved ked tam supnes este OR a povondu podmienku, mas to vsetko jednym deletom. A dik za typ. Tie vnorene selecty zatial moc nepouzivam. Ak to takto ide, usetrim si jedno zbytocne plnenie pola. A aj jeden select. Ozaj, ako to je? Jeden takyto, hoc komplikovanejsi, dotaz je setrnejsi k prostriedkom servera ako 2 jednoduchsie ze.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 15.03.2011 21:02 | |
|
no zalezi kolko prace musi vykonat a ako je v danej databaze vykonavany. inak sa k rovnakemu selectu moze postavit mysql, inak oracle , inak mssql .
|
|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 Bydlisko: Bratislava |
no keby pouzivas v MySQL InnoDB engine, tak ti to riesi same na zaklade foreign klucov (ak ich mas teda definovane)..
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|