Autor Téma: SQLite Update a Delete z hľadiska teórie  (Přečteno 185 krát)

Offline Miroslav Baláž

  • Hrdina
  • ****
  • Příspěvků: 282
  • Karma: 10
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
SQLite Update a Delete z hľadiska teórie
« kdy: 23-03-2018, 12:08:29 »
V SQLite majú príkazy UPDATE a DELETE dosť závažné obmedzenia.
Napríklad UPDATE, riadené pomocou JOIN nie je podporované:
Kód: MySQL [Vybrat]
  1. UPDATE tbl1 SET tbl1.Pole1 =
  2.    ( SELECT Expression FROM tbl1 INNER JOIN Tbl2
  3.        ON Tbl1.XY=Tbl2.XY
  4.    )
Preto som navrhol vlastné riešenie v tvare:
Kód: MySQL [Vybrat]
  1. UPDATE dstTableName AS d SET ( Field1, Fied2, .. )
  2.         SELECT a.Field1, a.Field2 ..
  3.         FROM    dstTableName AS d INNER|LEFT JOIN tblName a
  4.                         ON d.FieldXY=a.FieldZX
  5.         WHERE Condition -- Poznámka : tu môže byť napr. aj podmienka
  6.         ORDER BY FieldList asc|desc
  7.         )
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.


Online Delfin

  • Guru
  • *****
  • Příspěvků: 965
  • Karma: 44
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:SQLite Update a Delete z hľadiska teórie
« Odpověď #1 kdy: 23-03-2018, 13:07:02 »
Ale môže to byť ozaj stabilné riešenie?

Ano. Dokud vse probehne uvnitr transakce.
I'm a soldier, so don't panic! I know the underground! No more Google, go duck, go!

Offline Miroslav Baláž

  • Hrdina
  • ****
  • Příspěvků: 282
  • Karma: 10
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:SQLite Update a Delete z hľadiska teórie
« Odpověď #2 kdy: 23-03-2018, 13:29:52 »
Dík. Tak idem aj do toho DELETE:)

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):