Hirdetés
- Milyen okostelefont vegyek?
- Android alkalmazások - szoftver kibeszélő topik
- Határozatlan időre kiszáll az Asus a mobilbizniszből
- Honor Magic5 Pro - kamerák bűvöletében
- Honor Magic6 Pro - kör közepén számok
- Komoly kihívót küldött a konkurenciára a Honor
- Poco F8 Pro – titkos favorit lehet belőle
- Fontos frissítés érkezik a OnePlus 13-ra
- Android szakmai topik
- Xiaomi 15T - reakció nélkül nincs egyensúly
Ú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
- Milyen okostelefont vegyek?
- Kerékpárosok, bringások ide!
- Amlogic S905, S912 processzoros készülékek
- VGA kibeszélő offtopik
- One otthoni szolgáltatások (TV, internet, telefon)
- Xiaomi Pad 7 Pro - fél kiló, maradhat!
- Formula-1
- Napelem
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- Hikvision HIKSEMI E3000 CITY 512GB PCIe 3.0 NVMe M.2 2280
- Apple iPhone 12 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- MacBook Air M1 13" 16Gb 256GB SSD Space Gray - magyar billentyűzet
- Lenovo M92p Desktop (ThinkCentre) - Type 3209
- Latitude 5320 27% 13.3" FHD IPS érintő i7-1185G7 16GB 512GB NVMe IR kam gar
- Apple iPhone 15 Pro / 256GB / Kártyafüggetlen / 12Hó Garancia / Akku: 88%
- Playstation 4 Slim 1 TB kontroller 6 hó garancia, számlával!
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- Nvidia Quadro P400/ P620/ P1000/ T400/ T1000 - Low profile (LP) + RTX A2000 6/12Gb + AMD Radeon
- Dell XPS 13 9300 i7-1065G7 8GB 1000GB FHD+ 500nit! 1 év garancia
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: Laptopműhely Bt.
Város: Budapest


