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 23:33 | Nová verze

    Immich byl vydán v první stabilní verzi 2.0.0 (YouTube). Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:33 | IT novinky

    Český telekomunikační úřad vydal zprávy o vývoji cen a trhu elektronických komunikací se zaměřením na rok 2024. Jaká jsou hlavní zjištění? V roce 2024 bylo v ČR v rámci služeb přístupu k internetu v pevném místě přeneseno v průměru téměř 366 GB dat na jednu aktivní přípojku měsíčně – celkově jich tak uživateli bylo přeneseno přes 18 EB (Exabyte). Nejvyužívanějším způsobem přístupu k internetu v pevném místě zůstal v roce 2024 bezdrátový

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 12:11 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-10-01. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Jedná o první verzi postavenou na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    včera 05:22 | Nová verze

    Byla vydána nová verze 4.6 svobodného notačního programu MuseScore Studio (Wikipedie). Představení novinek v oznámení v diskusním fóru a také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Komunita

    Společnost DuckDuckGo stojící za stejnojmenným vyhledávačem věnovala 1,1 milionu dolarů (stejně jako loni) na podporu digitálních práv, online soukromí a lepšího internetového ekosystému. Rozdělila je mezi 29 organizací a projektů. Za 15 let rozdala 8 050 000 dolarů.

    Ladislav Hagara | Komentářů: 4
    1.10. 20:11 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.17. Díky 278 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    1.10. 16:11 | Nová verze

    Bylo vydáno openSUSE Leap 16 (cs). Ve výchozím nastavení přichází s vypnutou 32bitovou (ia32) podporou. Uživatelům však poskytuje možnost ji ručně povolit a užívat si tak hraní her ve Steamu, který stále závisí na 32bitových knihovnách. Změnily se požadavky na hardware. Leap 16 nyní vyžaduje jako minimální úroveň architektury procesoru x86-64-v2, což obecně znamená procesory zakoupené v roce 2008 nebo později. Uživatelé se starším hardwarem mohou migrovat na Slowroll nebo Tumbleweed.

    Ladislav Hagara | Komentářů: 3
    1.10. 16:00 | IT novinky

    Ministerstvo průmyslu a obchodu (MPO) ve spolupráci s Národní rozvojovou investiční (NRI) připravuje nový investiční nástroj zaměřený na podporu špičkových technologií – DeepTech fond. Jeho cílem je posílit inovační ekosystém české ekonomiky, rozvíjet projekty s vysokou přidanou hodnotou, podpořit vznik nových technologických lídrů a postupně zařadit Českou republiku mezi země s nejvyspělejší technologickou základnou.

    … více »
    Ladislav Hagara | Komentářů: 3
    1.10. 12:55 | Nová verze

    Radicle byl vydán ve verzi 1.5.0 s kódovým jménem Hibiscus. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.

    Ladislav Hagara | Komentářů: 3
    1.10. 03:22 | IT novinky

    Společnost OpenAI představila text-to-video AI model Sora 2 pro generování realistických videí z textového popisu. Přesnější, realističtější a lépe ovladatelný než předchozí modely. Nabízí také synchronizované dialogy a zvukové efekty.

    Ladislav Hagara | Komentářů: 4
    Jaké řešení používáte k vývoji / práci?
     (41%)
     (47%)
     (15%)
     (16%)
     (18%)
     (14%)
     (17%)
     (14%)
     (14%)
    Celkem 158 hlasů
     Komentářů: 9, poslední 24.9. 17:28
    Rozcestník

    Dotaz: SQLite rowid nebo id

    5.12.2022 14:28 Jirka
    SQLite rowid nebo id
    Přečteno: 1917×
    Ahoj, parsuji nějaká data a výsledkem by měl být textový SQL soubor, který se později nahraje do SQLite. V datech je nějaký popis jako krátký text a k němu může být několik obrázků (ale nemusí). Zhotovil jsem tuto jednoduchou databázi:
    CREATE TABLE popis (
        id    INTEGER PRIMARY KEY AUTOINCREMENT,
        text TEXT
    );
    CREATE TABLE popis_obrazek (
        id    INT NOT NULL,
        src   TEXT NOT NULL,
        FOREIGN KEY(id) REFERENCES popis(id)
    );
    
    A výsledkem parsování je takovýto soubor:
    INSERT INTO popis (text) VALUES("Jakysi popis");
    INSERT INTO popis_obrazek (id, src) VALUES((SELECT seq FROM sqlite_sequence WHERE name='popis'), 'obrazek1.jpg');
    INSERT INTO popis_obrazek (id, src) VALUES((SELECT seq FROM sqlite_sequence WHERE name='popis'), 'obrazek2.jpg');
    
    A všechno pracuje jak má. Každý obrázek má id popisu, ke kterému patří. Napadlo mě vyhodit z tabulky popis ten sloupec id, vždyť je tam už rowid. Ale jak s ním pracovat v insertech, vždyť po prvním insertu do popis_obrazek se last_insert_rowid() změní. Našel jsem, že by to šlo oklikou přes pomocnou tabulku, ale zdá se mi to zbytečné. Je na to nějaký fígl, nebo je lepší nechat id a nepoužívat rowid? Díky za inspiraci.

    Odpovědi

    5.12.2022 15:16 X
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    Rekl bych ,ze to 'id' je v obou pripadech zbytecne. K tomu vkladani muzes pouzit 'SELECT last_insert_rowid()' a teoreticky transakci, nebo sekvenci INSERT .. VALUE (A,B), (C,D);.
    5.12.2022 16:02 Jirka
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    Ano, sekvence v INSERT - to je řešení. Upravil jsem to takto:
    CREATE TABLE popis (
        text TEXT
    );
    CREATE TABLE popis_obrazek (
        id    INT NOT NULL,
        src   TEXT NOT NULL,
        FOREIGN KEY(id) REFERENCES popis(rowid)
    );
    
    INSERT INTO popis (text) VALUES("Jakysi popis");
    INSERT INTO popis_obrazek (id, src) VALUES((SELECT LAST_INSERT_ROWID()), 'obrazek1.jpg'), ((SELECT LAST_INSERT_ROWID()), 'obrazek2.jpg');
    
    To id v tabulce popis_obrazek tam být musí, identifikuje, ke kterému popisu obrázek patří. Děkuji mnohokráte za radu.
    5.12.2022 17:53 .
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    To je řešení ve stylu "jak si rozbít data". Zkuste si přečíst třeba tohle.
    5.12.2022 18:35 X
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    Nesmysl. Misto straseni to zkus priste realne podlozit. Mimochodem, informace na odkazu nijak tazatelovo reseni neovlivnuje.
    5.12.2022 18:43 Jirka
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    Aha, to by mohl být problém. Takže zpět na id, ovšem se sekvencí v INSERTu.
    9.12.2022 12:31 Tom K | skóre: 22
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    Nepoužíval bych LAST_INSERT_ROWID, ale:
    INSERT INTO popis VALUES('Jakysi popis') RETURNING rowid; 
    A pozor, bez:
    PRAGMA foreign_keys = ON;
    nebude fungovat kontrola referenční integrity.
    echo -n "u48" | sha1sum | head -c3; echo
    30.12.2022 12:54 ChatBot GPT-3
    Rozbalit Rozbalit vše Re: SQLite rowid nebo id
    Ano, v SQLite můžete použít speciální sloupec rowid, který zajišťuje unikátní identifikátor pro každý řádek v tabulce. Můžete tedy vytvořit tabulku popis_obrazek bez sloupce id a namísto toho použít sloupec rowid ze tabulky popis.

    Vytvořte tabulku popis_obrazek takto:
    CREATE TABLE popis_obrazek (
        popis_rowid INTEGER NOT NULL,
        src TEXT NOT NULL,
        FOREIGN KEY(popis_rowid) REFERENCES popis(rowid)
    );
    
    Následně můžete vkládat do tabulky popis_obrazek pomocí příkazu INSERT s výrazem last_insert_rowid() pro získání posledního vloženého rowid:
    INSERT INTO popis (text) VALUES("Jakysi popis");
    INSERT INTO popis_obrazek (popis_rowid, src) VALUES(last_insert_rowid(), 'obrazek1.jpg');
    INSERT INTO popis_obrazek (popis_rowid, src) VALUES(last_insert_rowid(), 'obrazek2.jpg');
    
    Tento způsob může být vhodný, pokud nepotřebujete sloupec id v tabulce popis a chcete využít automatického generování identifikátorů v SQLite pomocí rowid.

    Pokud ale potřebujete sloupec id v tabulce popis, je lepší ho ponechat a používat ho jako klíč pro odkazování v tabulce popis_obrazek. Toto je obecně považováno za lepší praxi, protože rowid může být přepsán při určitých operacích s tabulkou, například při přesunutí řádků nebo při vkládání řádků do středu tabulky. Klíče definované uživatelem (jako je id) jsou stabilnější a méně pravděpodobné, že se změní.

    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.