abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 14:24 | Nová verze

Opera 46, verze 46.0.2597.26, byla prohlášena za stabilní. Nejnovější verze tohoto webového prohlížeče je postavena na Chromiu 59. Z novinek lze zmínit například podporu APNG (Animated Portable Network Graphics). Přehled novinek pro vývojáře na blogu Dev.Opera. Oznámení o vydání zmiňuje také první televizní reklamu.

Ladislav Hagara | Komentářů: 0
včera 13:37 | IT novinky

I čtenáři AbcLinuxu před dvěma lety vyplňovali dotazníky věnované Retro ThinkPadu. Nyní bylo potvrzeno, že iniciativa Retro ThinkPad je stále naživu a Lenovo připravuje speciální edici ThinkPadu jako součást oslav jeho 25. výročí.

Ladislav Hagara | Komentářů: 8
včera 10:22 | Komunita

Bylo oznámeno, že frontend a runtime programovacího jazyka D bude začleněn do kolekce kompilátorů GCC (GNU Compiler Collection). Správcem byl ustanoven Iain Buclaw.

Ladislav Hagara | Komentářů: 4
21.6. 18:47 | IT novinky
Bulharská firma Olimex je známá jako výrobce kvalitních mini arm desek, u nichž se snaží být maximálně open source. Kromě velké otevřenosti taktéž zaručují dlouhodobou podporu výroby, což je vítáno ve firemním prostředí. Nyní firma ohlásila ESP32-GATEWAY, malou IoT desku s Wifi, Bluetooth, Ethernetem a 20 GPIO porty za 22EUR. Tato malá deska je ořezanou verzí ESP32-EVB.
Max | Komentářů: 19
21.6. 18:00 | Zajímavý článek

LinuxGizmos (v dubnu loňského roku přejmenován na HackerBoards a v lednu letošního roku zpět na LinuxGizmos) zveřejnil výsledky čtenářské ankety o nejoblíbenější jednodeskový počítač (SBC) v roce 2017. Letos se vybíralo z 98 jednodeskových počítačů (Tabulky Google). Nejoblíbenějšími jednodeskovými počítači v letošním roce jsou Raspberry Pi 3 Model B, Raspberry Pi Zero W a Raspberry Pi 2 Model B.

Ladislav Hagara | Komentářů: 0
21.6. 14:22 | Pozvánky

Ne-konference jOpenSpace 2017 se koná od 13. do 15. října 2017 v hotelu Farma u Pelhřimova. Registrace účastníků je nutná. Více informací na stránkách ne-konference.

Zdenek H. | Komentářů: 0
21.6. 14:11 | Nová verze

Vyšla nová verze 1.2 audio kodeku Opus, která přináší mnoho drobných optimalizací a tím i celkové vylepšení poměru bitrate/kvalita. Fullband (do 20 kHz) stereo hudba je možná již od 32 kbit/s, fullband mono řeč již od 14 kbit/s. Více informací sepsal vývojář Opusu J. M. Valin formou již tradiční demo stránky.

Petr Tomášek | Komentářů: 19
21.6. 14:00 | Zajímavý článek

Na MojeFedora.cz byl zveřejněn překlad příspěvku na blogu Christiana Schallera, vedoucího desktopového týmu v Red Hatu, v němž se zabývá novinkami ve Fedoře Workstation 26 a následujících vydáních. Například již ve Fedoře 27 by se měl objevit jednotný server pro audio a video v Linuxu PipeWire. Ten byl představen před dvěma lety. Tenkrát ještě pod názvem Pinos (PulseVideo).

Ladislav Hagara | Komentářů: 0
21.6. 05:55 | Bezpečnostní upozornění

V KMailu byla nalezena a opravena bezpečnostní chyba CVE-2017-9604 týkající se uživatelů, již své maily podepisují a šifrují pomocí OpenPGP. Pokud uživatel KMailu při odesílání mailu zvolil možnost Odeslat později, tak byl mail odeslán nepodepsaný a v otevřeném tvaru.

Ladislav Hagara | Komentářů: 15
21.6. 04:44 | Pozvánky

Mozilla.cz zve na Mozilla meetupy v Brně a Praze. Brněnské setkání proběhne vůbec poprvé, a to tento pátek 23. 6. v Beer & Grill U Dřeváka. To pražské bude příští čtvrtek 29. 6. v Diversion Bistru.

Ladislav Hagara | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (6%)
 (31%)
 (1%)
 (9%)
 (44%)
 (9%)
Celkem 820 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    Rozcestník

    Dotaz: trigger

    28.1.2009 01:30 johny
    trigger
    Přečteno: 406×

    Ahoj vsem,  poteboval bych poresit jednu vec.

    Mam tabulku se zaznamy tvorenymi polozkami x a y, ktera vypada nejak takhle

    CREATE TABLE "tab" (

    x varchar(64);

    y varchar(64);

    created DATETIME;

    last DATETIME;

    UNIQUE ( x, y);

    )

    Krome polozek x a y obsahuje tabulka i dva casove udaje - kdy byl zaznam porizen a kdy byl naposledy kontrolovan.

    Samotne zaznamy by mely byt unikatni, nemenne, pri pokusu o vlozeni stejneho zaznamu by melo dojit jen k prepsani znacky 'last'.

    Myslim, ze to neni az tak neobvyykla uloha. Je mozne zajistit preklopeni pokusu o vlozeni na update znacky last pomoci triggeru? Primarne bych to chtel v sqlite, ale nebranim se ani reseni v jinych DB.

     

    Odpovědi

    28.1.2009 07:35 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
    Rozbalit Rozbalit vše Re: trigger

    ano, jde to. A často se to tak dělá.

    sqlite:  dokumentace a příklady

    Kuolema Kaikille (Paitsi Meille).
    28.1.2009 12:55 johny
    Rozbalit Rozbalit vše Re: trigger

    A mohl bych vedet jak?

    Googlit jsem samozrejme zkousel, zkousel jsem par desitek pokusu, ale porad ne a ne prijit na to jak :(

    28.1.2009 14:36 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
    Rozbalit Rozbalit vše Re: trigger

    snadno

    -- Script started
    CREATE TABLE tab
    (
    x VARCHAR2(64),
    y VARCHAR2(64),
    created DATETIME,
    updated DATETIME,
    unique(x, y)
    );
    -- No error
    --
    CREATE TRIGGER t_tab_insert
        AFTER INSERT ON tab
        FOR EACH ROW
    BEGIN
        UPDATE tab SET created = DATETIME('NOW')
             WHERE x = new.x
         AND y = new.y;
    END;
    -- No error
    --
    CREATE TRIGGER t_tab_update
        AFTER UPDATE OF x, y ON tab
        FOR EACH ROW
    BEGIN
        UPDATE tab SET updated = DATETIME('NOW')
             WHERE x = new.x
         AND y = new.y;
    END;
    -- No error
    --
    insert into tab values ('1', '1', null, null);
    -- No error
    --
    insert into tab values ('1', '2', null, null);
    -- No error
    --
    select * from tab;
    -- No error
    -- x   y   created             updated
    -- -   -   ------------------- -------
    -- 1   1   2009-01-28 13:34:54 {null}
    -- 1   2   2009-01-28 13:34:55 {null}

    update tab set x = '2';
    -- No error
    --
    select * from tab;
    -- No error
    -- x   y   created             updated
    -- -   -   ------------------- -------
    -- 2   1   2009-01-28 13:34:54 2009-01-28 13:35:36
    -- 2   2   2009-01-28 13:34:55 2009-01-28 13:35:36

    -- Script finished

    Jiné DB neš sqlite mají pochopitelně jiné možnosti. Takže by to šlo udělat jendím triggerem 9IF UPDATING... apod.) ale fakt bude lepší, kdyby sis přešetl nějakou SQL příručku a dokumentaci k tvé DB.

    Kuolema Kaikille (Paitsi Meille).
    28.1.2009 14:37 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
    Rozbalit Rozbalit vše Re: trigger

    kurvafix, ten editor mne zabje...

    Kuolema Kaikille (Paitsi Meille).
    28.1.2009 16:54 johny
    Rozbalit Rozbalit vše Re: trigger

    Diky,

      tohle jsem taky zkousel, ale me jde o to, aby kdyz udelam znovu insert toho sameho, tak abych misto hlasky o poruseni omezeni docilil ten update.

    sqlite> insert into tab values ('1', '1', null, null);
    sqlite> insert into tab values ('1', '2', null, null);
    sqlite> insert into tab values ('1', '1', null, null);
    SQL error: columns x, y are not unique
     

    28.1.2009 21:47 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
    Rozbalit Rozbalit vše Re: trigger
    jak rikam, cti dokumentaci ;)

    ON CONFLICT REPLACE http://www.sqlite.org/lang_conflict.html
    Kuolema Kaikille (Paitsi Meille).
    29.1.2009 08:48 johny
    Rozbalit Rozbalit vše Re: trigger

    Dokumentaci mam prectenou horem dolem, jinak bych se neptal :)

    U toho REPLACE se rika, ze pre-existing rows that are causing the constraint violation are removed. To mi ale vadi, protoze tim prijdu o puvodni hodnotu sloupce created. To uz mi prislo zajimavejsi to IGNORE ale s tim jsem taky niceho nedosahl.

    Idealni by bylo, kdy k tomu ON CONFLICT sla pripojit vlastni procedura nebo by sla odchytit ta chybova vyjimka, ale to tady nejde. Napadlo me i odstranit ten constraint a delat ho rucne v triggeru i kdyz to mi neprijde jako moc efektivni. Myslel jsem, ze by to mohla byt pomerne casta uloha a zajimalo me, jestli na to neni nejaka znama finta, at uz v sqline nebo jine DB.

     

     

    29.1.2009 14:40 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
    Rozbalit Rozbalit vše Re: trigger
    V jiných DB to jde snadno (Oracle, a asi i PostgreSQL), ale sqlite je prostě jednodušší.

    Tak to udělej jinak. Udělěj si k TAB ještě třeba TAB_AUDIT a k danému PK tam triggerem budeš házet záznamy. Hehe, třeba se k tomu tak nějak dostaneme...

    CREATE TABLE tab
    (
    x VARCHAR2(64),
    y VARCHAR2(64),
    unique(x, y) on conflict replace
    );
    
    create table tab_audit
    (
    x VARCHAR2(64),
    y VARCHAR2(64),
    dml_action varchar2(10),
    stamp DATETIME
    );
    
    CREATE TRIGGER t_tab_insert
        AFTER INSERT ON tab
        FOR EACH ROW
    BEGIN
        insert into tab_audit 
        values (new.x, new.y, 'INSERT', DATETIME('NOW'));
    END;
    
    CREATE TRIGGER t_tab_update
        AFTER UPDATE OF x, y ON tab
        FOR EACH ROW
    BEGIN
        insert into tab_audit 
        values (new.x, new.y, 'UPDATE', DATETIME('NOW'));
    END;
    
    insert into tab values ('1', '1');
    insert into tab values ('1', '1');
    insert into tab values ('1', '2');
    select * from tab;
    select * from tab_audit;
    
    update tab set x = '2';
    select * from tab;
    select * from tab_audit;
    

    Aktuální stav dohledáš (outer) joinem, historii selektem. Jo, a nejsou tam indexy.

    Anebo to ošetři v klientský aplikaci jako UPSERT.
    Kuolema Kaikille (Paitsi Meille).
    29.1.2009 11:14 qvaq
    Rozbalit Rozbalit vše Re: trigger

    V Oracle jde toto pomoci merge (tedy neni to uz insert) - definuje se co se ma stat pokud zaznam existuje (typicky update) a co pokud neexistuje (typicky insert). Samozrejme triggerem by to slo i v Oracle.

    Dovedu si predstavit, ze se takovy trigger muze nekdy hodit, nicmene mam s tim dost spatne zkusenosti. Pokud insert uz neni ve skutecnosti insert, muze to nekdy byt docela matouci, takze tam kde to jde preferuji explicitni reseni (zmineny merge nebo select a podle vysledku insert/update) - kazdemu je pak z kodu jasne, co se vlastne v tabulce stane.

    29.1.2009 14:13 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
    Rozbalit Rozbalit vše Re: trigger
    já bych triggery nejradši zrušil úplně ;)
    Kuolema Kaikille (Paitsi Meille).

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.