Sziasztok!
Mifelénk szokás, hogy nem az insert/update tölti ki a timestamp típusú lastupdate mezőt, hanem az sql szerver (on update current_timestamp). Így tuti, hogy frissül, nem kell a programozóra bízni, hogy frissíti-e a lastupdate mezőt. Viszont ha drupal_install_schema()-val hoznám létre a táblát, akkor nem engedi ezeket a lehetőségeket használni.
Találtam egy ránézésre működő megoldást a d.org-on, azonban a patch sorai elcsúsznak a nálam levő verzióhoz (d6.20) képest.
Milyen értelme van a schema api-t használni saját moduloknál? Azt látom, hogy a táblák létrehozása mellett adatbázisba is bejegyzi a sémát, de ez mire használható a gyakorlatban?
Van értelma patch-et raknom a drupalra, vagy maradjak inkább a db_query-nél?
Köszönöm!
timestamp mezőt schema API-val, aztán db_query-s ALTER TABLE
_szerintem_ a modulneve.install-ban hozd létre a timestamp mezőt schema API-val, hogy a drupal tudjon róla, aztán jöhet egy db_query-s ALTER TABLE. A patch-elést kihagynám.
nincs timestamp tipus
Így is próbáltam, de nem tudok timestamp típust létrehozni.
Az eredmény ez lesz:
e helyett:
Vagyis nem kerül az sql-be a timestamp, mint mezőtípus. A datetime meg datetime lesz mysql alatt.
workaround
Rész megoldás lehet, ha megadjuk a konkrét mysql tipust:
Ezután ki lehet adni az alter-t:
Az insertek így nézhetnek ki:
Az első esetben minden mezőt ki kell tölteni, míg a másodikban a mezo1 (tábla elsődleges kulcsa, AUTO INCREMENT) és a lastupd mező elhagyható.
Egyedüli hártánya, hogy az állapot jelentésben a Schema modul jelzi, hogy "Field tabla.tabla_lastupd: no Schema type for mysql type timestamp." A patch ezen segíthetne, csak utána a verzió váltás okozna gondot.