V SQLite majú príkazy UPDATE a DELETE dosť závažné obmedzenia.
Napríklad UPDATE, riadené pomocou JOIN nie je podporované:
Preto som navrhol vlastné riešenie v tvare:
WHERE Condition
-- Poznámka : tu môže byť napr. aj podmienka )
S tým mi pomohol Delfín:
.. Kdyz jsi u vykonu, co zkusit low level (nemusel bys "vlacet" kurzor) ?
..
V uvedenom vlákne je aj princíp a príslušné kódy.
Teraz mám záujem využiť obdobnú konštrukciu pre DELETE.
Technicky to zvládam, ale keďže idem venovať určité úsilie do riešenia, chcem sa spýtať,
z hľadiska teórie, či si v takomto riešení nejdem podpíliť haluz pod zadnicou..
V oboch prípadoch sa využíva vodiace Query (SQL), čerpajúce údaje z tabuľky, ktorá je súčasne menená (UPDATE), alebo dokonca mazaná (DELETE).
To by pri databázach typu C/S nemusel byť problém.. Ale pri "jednoduchej" databáze, akou je SQLite je to tiež OK?
Vyššie spomínané a fungujúce UPDATE sa zdá byť v poriadku. Ale
môže to byť ozaj stabilné riešenie?Nie je podobná verzia DELETE ešte viac ohrozená?
Poznámka: Prosím neodkazujte na riešenia, ktoré existujú v SQLite a obchádzajú tento problém zložitejšími Subquery.
Skúšal som rôzne varianty z webu, na tabuľke so 6 mega riadkami.. Pre tak veľkú tabuľku, sú prakticky nepoužiteľné.
Jednoducho v reálnom čase nedobehnú. Vyššie uvedené riešenie je hotové za 15 sekúnd.