Hirdetés
- iPhone topik
- Telekom mobilszolgáltatások
- Poco F8 Ultra – forrónaci
- Apróbb változással jön a Pixel 11 az első képek szerint
- Honor 200 - kétszázért pont jó lenne
- Samsung Galaxy A56 - megbízható középszerűség
- Képernyőmentes Fitbit jön a Google-től
- Xiaomi 15T Pro - a téma nincs lezárva
- Android alkalmazások - szoftver kibeszélő topik
- Elkalapálta a snapdragonos Galaxy S26 az exynososat
Új hozzászólás Aktív témák
-
nyunyu
félisten
válasz
Micsurin
#4804
üzenetére
Egy tranzakcióban futó adatmanipulációs (DML) utasítások (insert, update, merge, delete...) hatását csak az őket futtató DB session látja, amíg a tranzakció nincs commitálva.
Mittudomén, van egy táblád, amiben van 10 rekord.
Nyitsz egy adatbáziskezelő ablakot, amiben kiadsz 5 insertet, meg 3 updateet, majd kiadsz egy select count(*) from tabla;-t, akkor az ott 15-öt fog mutatni.
Közben nyitsz egy másik ablakot, egy ott kiadott select * from tabla; az eredeti állapotot, 10 rekordot fog mutatni, a még nyitva lévő tranzakcióban hozzáadott ötöt, meg az updateek hatását nem!
Ha az első ablakban kiadsz egy commit;-ot (amivel véglegesíted az addig nyitott tranzakcióban futtatott DML utasítások hatását és lezárod a tranzakciót), akkor a második ablakbeli select *-ot újrafuttatva már 15, módosult rekord fog megjelenni.
Ha az első ablakban commit; helyett rollback;-et nyomsz, akkor teljesen eldobódik a nyitott tranzakcióban futtatott DMLek hatása, és visszaáll az eredeti állapotra.
Tehát ha utána kiadnál egy select *-ot, akkor ugyanazt a 10 eredeti rekordot látnád az első ablakban is, mint korábban a kettes ablakban.Adatdefiníciós (DDL) utasítások (pl. tábla létrehozás, eldobás, oszlop hozzáadás, index létrehozás...) mindig önálló tranzakcióban futnak és azonnal commitálódnak, így azok nem vonhatóak vissza kiadás után.
Meg ha jól rémlik, akkor az adott DB sessionben még függőben lévő tranzakciót is commitálják!Savepointokat még nem használtam, de ahogy olvasom arra jó, hogy rollbacknél meg lehessen mondani, hogy ne az egész addigi tranzakciót dobja el, hanem csak a savepoint után futtatott utasításokat.
Lehet, hogy valakik szerint ez jó ötlet, de alapvetően sérti a tranzakciók atomiságát, és jóval nehezebb egy félig lefutott tranzakció által elcseszett adatokat javítani, mint ha eldobnád az egészet a francba, és javítás után elölről újrafuttatnád az egészet.
Új hozzászólás Aktív témák
- Eredeti játékok OFF topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Már elérhető a mobil eszközökre szánt The Division: Resurgence
- Android játékok topikja
- A Shift Up felvásárolta Shinji Mikami új stúdióját, az Unboundot
- Star Trek
- Horgász topik
- Fűnyíró topik
- Robogó, kismotor
- Fejhallgatós találkozó
- További aktív témák...
- Lenovo ThinkCentre M920q - i5-9500T/16GB RAM (DDR4)/256GB SSD - USFF mini PC Tiny PC
- Dell Latitude 5501,15.6" FHD,i5-9400H,16GB DDR4,512GB NVMe SSD,WIN11,LTE KÁRTYA,ÚJ AKKU
- Lenovo ThinkVision S27i-30 Monitor 27" - új állapot, garancia: 2029.01.16. 1920x1080, 100Hz, IPS
- ThinkPad P53 15.6" FHD IPS i7-9850H T1000 16GB 512GB NVMe magyar vbill ujjolv IR kam gar
- BOMBA ÁRrR! Lenovo ThinkPad T14 Gen 4 Ryzen 5 PRO 7540U 14" FHD+ 32GB 1TB Lenovo gar: 2028.01.07!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

