SQL view rekordjának módosítási ideje
2021-10-25T08:19:00+02:00
2021-10-25T09:25:49+02:00
2022-08-12T05:10:28+02:00
splash05
Sziasztok!

Van egy view-m és szeretném kiegészíteni egy olyan oszloppal, amiben minden rekordra vonatkozóan tárolom azt a dátumot, amikor az módosítva lett (bármely mezője a rekordnak).
Lehetséges ez Oracle SQL-ben és ha igen hogyan?
Mutasd a teljes hozzászólást!
Hali!

A view - a nevében is benne van - csak egy nézete az adatbázisnak, nincsenek saját oszlopai.

Miért ne lehetnének? Egy nézet nem más, mint egy lekérdezés eredménye. A lekérdezésbe pedig azt raksz, amit akarsz (és az adatbázis-motor enged) – így akár számolt vagy pszeudo-/technikai oszlopokat is. Oracle PL/SQL-ben egy ilyen pszeudo-oszlop pl. az ORA_ROWSCN nevű, ami nagyjából (ha nem row-level dependency tracking-gel hoztad létre a táblát, egyébként viszonylag pontosan) az adott sor utolsó módosítását adja vissza. Ez egy szám, amit időponttá lehet alakítani, ha az SCN_TO_TIMESTAMP() függvényen „megfuttatod”. Például:
SELECT employees.id , employees.name , employees.age , SCN_TO_TIMESTAMP(ORA_ROWSCN) AS last_modification FROM employees WHERE employees.active = 1
Annyiban jogos a „nincsenek saját oszlopai” kitétel, hogy az ORA_ROWSCN a tényleges táblára vonatkozik (nem a nézetre). Bár régen foglalkoztam Oracle-lel.
Mutasd a teljes hozzászólást!

  • Csak akkor, ha a view-t felépitő táblák bármelyikében megvan ez az oszlop. Akkor egyszerűen beteszed a view definiciójába.
    ha nincs ilyen mező a táblákban, akkor valamelyikbe fel kell venned egyet.
    Vagy felveszel egy új táblát, ami ezt az adatot tartalmazza, és hozzáadod a view-hoz.
    A view - a nevében is benne van - csak egy nézete az adatbázisnak, nincsenek saját oszlopai.
    Mutasd a teljes hozzászólást!
  • Hali!

    A view - a nevében is benne van - csak egy nézete az adatbázisnak, nincsenek saját oszlopai.

    Miért ne lehetnének? Egy nézet nem más, mint egy lekérdezés eredménye. A lekérdezésbe pedig azt raksz, amit akarsz (és az adatbázis-motor enged) – így akár számolt vagy pszeudo-/technikai oszlopokat is. Oracle PL/SQL-ben egy ilyen pszeudo-oszlop pl. az ORA_ROWSCN nevű, ami nagyjából (ha nem row-level dependency tracking-gel hoztad létre a táblát, egyébként viszonylag pontosan) az adott sor utolsó módosítását adja vissza. Ez egy szám, amit időponttá lehet alakítani, ha az SCN_TO_TIMESTAMP() függvényen „megfuttatod”. Például:
    SELECT employees.id , employees.name , employees.age , SCN_TO_TIMESTAMP(ORA_ROWSCN) AS last_modification FROM employees WHERE employees.active = 1
    Annyiban jogos a „nincsenek saját oszlopai” kitétel, hogy az ORA_ROWSCN a tényleges táblára vonatkozik (nem a nézetre). Bár régen foglalkoztam Oracle-lel.
    Mutasd a teljes hozzászólást!
abcd