Hmm. Aš MySQL aprašyme randu tai : Šaltinis: http://dev.mysql.com/doc/refman/5.0/en/commit.html START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT; Tai turi palaikyt trnasakcija. > Kiek zinau MySQL kazkuriam savo pavidale is viso nenaudoja transakciju, > tokia baze gink dieve neturi buti naudojama duomenu redagavimui - > isimtinai tik skaitymui (neskaitant duomenu krovimo i tokia baze, kur > transakcijas atitinkantis mechanizmas turetu buti suskurtas kartu su > krovimo kodu). O jai nenaudoti MySQL ir išvengt visų išvardintų nesklandumų tai gaunasi pasirinkimas MSSQL Express (kad būtų nemokama duomenų bazė, ir neribojamas duomenų kiekis, nors gal ir riboja iki 2 Gb dydio) ? Privalumas ir poreikis nemokamai DB. "2x50" <2x50@100.gr> wrote in message news:jaiorn$kcn$1@trimpas.omnitel.net... >> 1. Duomenų bazėje dirbti galima ir privaloma naudojant tik transakcijas. > > Jei DBVS palaiko transakcijas, jos pacios uztikrina, kad duomenys > redaguojami tik naudojant transakcijas. Skirtumai buna tame, kaip > skirtingos DBVS nustato kur yra transakcijos pradzia, ir kur yra pabaiga. > Tarkim, turim toki pseudo skripta > > update table_1 set col_1 = 15 where id = 7; > if x > y then > update table_2 set col_2 = 27 where id = 12; > end if; > > Vienos DBVS transformuos jas i > > begin transacion > update table_1 set col_1 = 15 where id = 7; > if x > y then > update table_2 set col_2 = 27 where id = 12; > end if; > commit; > when exception rollback; > > kitos, transformuos i > > begin transacion > update table_1 set col_1 = 15 where id = 7; > commit; > when exception rollback; > if x > y then > begin transaction > update table_2 set col_2 = 27 where id = 12; > commit; > when exception rollback; > end if; > > del to reikia skaityt konkrecios DBVS dokumentacija, skyriuje implicit > transactions ar pan. paprastai buna aprasyta, kaip DBVS nustato kur yra > transakcijos pradzia ir kur pabaiga. > >> 2.Visi duomenų importai, eksportai turi vykti tik tada kai baigiasi visos >> transakcijos, siekiant turėti kuo tiksliasvius duomenis sistemoje. > > Duomenu importas, kaip ir bet koks insert sakinys, taip pat yra > transakcija, taip pat kaip ir vieno iraso iterpimas taip pat yra duomenu > importas. Del to DBVS traktuos taip lygiai taip pat kaip ir kitas > transakcijas. Statys i eile ir vykdys is eile tas transakcijas, kurios > ruosiasi redaguoti tuos pacius duomenis. > Apskritai, dideliu duomenu kiekiu vartymas yra visiskai atskira tema, ten > visai kitos problemos, palyginus su OLTP sistemom. > >> Iš to man išplaukia klausimas (duomenų bazė MySQL): > > Kiek zinau MySQL kazkuriam savo pavidale is viso nenaudoja transakciju, > tokia baze gink dieve neturi buti naudojama duomenu redagavimui - > isimtinai tik skaitymui (neskaitant duomenu krovimo i tokia baze, kur > transakcijas atitinkantis mechanizmas turetu buti suskurtas kartu su > krovimo kodu). > >> 1. Jai aš naudoju INSERT, UPDATE, DELETE tiesiog paprastai tai jos >> vyksta per transakcijas ar reikia kazkaip kitaip pradeti transakciją >> įvygdyti INSERT ir tik po gauto rezultato užbaigti transakcija su Commit >> arba Rollback? > > zr. auksciau ir MySQL dokumentacija. Kiekvienas insert, update, delete > vyksta per transakcija, problemos atsiranda tada, kai yra keletas komandu > vienam skripte. > >> 2. Jai vienas vartotojas daro įrašo UPDATE tai kitas vartotojas gali >> tapatį įrašą padaryti DELETE? Ar jis galės padaryti tik tada kai baigs >> UPDATE? > > Priklauso nuo to kaip transaction manager'is sustatys transakcijas i eile. > Jei pirmoji bus update, antroji delete, tai jos sekmingai ivyks viena po > kitos. Jei pirma bus delete, update transakcija baigsis klaida "irasas > neegzistuoja". >