Warning: Declaration of Suffusion_MM_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /DISK2/WWW/plsql.cz/www/wp-content/themes/suffusion/library/suffusion-walkers.php on line 0
Jan 272014
 

Další (ne)zajímavá novinka z nové verze databáze Temporal Validity. Zkrácenědo tabulky ve které jsou dva datumové sloupce, které pokryvají nějaké časové okno (například sloupce zacatek_platnost, konec_platnost) lze přidat mechanizmus, který zobrazí jen záznamy, které  byly v daný čas validní. Technicky vzato je to úplně stejné, jako napsat do podmínky where (moje_datum > zacatek_platnost and moje_datum < konec_platnost). Ačkoliv je to trošku lež. Oracle při přidání filtru handluje pochopiteně ještě i nully. Tedy  korektně je to tato podmínka: (((zacatek_platnosti is null or zacatek_platnosti <=moje_datum)  and (konec_plastnost is null or konec_platnost>moje_datum))). Ano, takto polouzavřený interval. Takže asi tak ;) A rovnou příklad:

create table tbl_test_temporal_validity
(
id number,
zacatek_platnost date,
konec_platnost date,
period for validni(zacatek_platnost,konec_platnost)
);

A nyní by tam chtělo nasypat nějaká ta data:

insert into tbl_test_temporal_validity select rownum,sysdate-(10-rownum),sysdate+mod(rownum,7) from dual connect by level<11;

Což insertuje nějaká takováto data:

Dnes je 27.1. a  mínus 5 dní je 22.1. takže všechny záznamy, které začínají později (23.1.+) nejsou vyselektovány, za zmíňku stojí ještě 22.1., které tam padlo kvůli časové složce, která na obrázku není vidět, takže to může být matoucí ;) A nyní select s temporal validity:
select * from tbl_test_temporal_validity as of period for validni sysdate-5;

Takže asi tak, nějaké poznámky alespoň:

  • V exekučním plánu se normálně zobrazuje celá podmínka, jako filtr. Tzn. žádná změna o proti selectu s where, jaký by napsal sám programátor
  • V *_tab_cols se sloupec “validni” dá normálně najít a jeho atributy jsou: USER_GENERATED=NO, SEGMENT_COLUMN_ID=null, HIDDEN_COLUMN=yes, VIRTUAL_COLUMN=null, TYP=NUMER
  • Do tabulky jde validni přidat až ex-post, pomocí ALTER TABLE ADD.., sloupce definující časové okno musí v tu dobu existovat.

Lehce užitečné, možná to občas použijeme, ale lidskou samičku to rozhodně neohromí :-(

 Posted by at 05:18

 Leave a Reply

(required)

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>