Saakos MySQL:ässä sillein, että kun toisesta taulusta tuhoaa rivin, niin toisestakin tuhoutuu rivi? Tai mitä hyötyä relaatioista ylipäätänsä on?
No juuri niillä relaatioilla tuo onnistuu, kunhan taulut käyttävät uudempaa InnoDB-moottoria vanhan ja raihnaisen MyISAMin sijaan. Automaattinen poisto onnistuu lisäämällä FOREIGN KEY
-määreen perään ON DELETE CASCADE
.
Hennkka kirjoitti:
Tai mitä hyötyä relaatioista ylipäätänsä on?
Relaatioista on ennenkaikkea se hyöty, että ne varmistavat tietojen eheyttä. Eli ei voi olla taulussa sellaista arvoa, jota ei löydy vierastaulusta.
Jos ei laitta delete ja update casceja niin sitten se tietokanta huutaa jos yrittää vahingossa laittaa arvon jota ei ole tai poistaa tietueen johon viitataan. Jos taas laittaa cascadet, niin se päivittää poistot ja muutokset. Itse suosin ilman cascadea.
Kiitos. Niin minulle sanottiinkin ja sain toimimaan kotikoneella. Harmiksi vain kaverin palvelimella ei ole InnoDB-moottoria:(
Kuinka voisin muuttaa MySQL palvelimen aikavyöhykkeen? Kaverini palvelin lienee Amerikassa, mutta aikavyöhyke tuntuisi olevan UTC. Käytän MySQL:än NOW()-funktiota viestin ajan tallentamiseen, joten saisinko muutettua sen siten, että se palauttaa ajan Suomen ajassa ilman, että muutan kyselyä? Miten tämä onnistuis php:ssä?
ps. Grez: käytinkin SET NULL:ia, jottei tiedot katoa
Eikö järkevintä olisi tallentaa ne ajat kantaan UTC-muodossa ja sitten näyttää kulloisellekin käyttäjälle tämän omassa aikavyöhykkeessä? Jos tallennat suomen kesä/talvi-ajassa niin pitäisi muutenkin tallentaa tieto kummasta on kysymys, tai muuten tulee päällekkäisiä aikoja kun kelloja siirretään tunti taaksepäin.
Ajattelinkin, että aika kannattaa tallentaa UTC:nä ja tulkita sitten. Niin miten sen aikavyöhykkeen saa muutettua php:ssä. Siis siten, että aika funktiot palauttavat suoraan oikeassa ajassa? Ja kuinka saan selville käyttäjän aikavyöhykkeen?
Aihe on jo aika vanha, joten et voi enää vastata siihen.