110 likes | 287 Views
Transaksi Materi 6. Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012. Sistem Manajemen Basis Data. Transaksi. Sebuah database dapat diakses oleh beberapa user dalam satu waktu . Hal ini berarti , dapat saja ada beberapa statement yang dijalankan .
E N D
TransaksiMateri 6 Eko Prasetyo TeknikInformatika UniversitasBhayangkara Surabaya 2012 SistemManajemen Basis Data
Transaksi • Sebuah database dapatdiaksesolehbeberapa user dalamsatuwaktu. • Hal iniberarti, dapatsajaadabeberapa statement yang dijalankan. • Jikaoperasi data tersebutterjadipadasatutabel, atausatubaris data, makasangatberpotensimenghasilkan data yang tidakkonsisten. • Karenaitu, diperlukanisolasikoneksidariberbagai user yang melakukanoperasi database. • Isolasiinidimaksudkan agar hanyasatuoperasidari user tertentusaja yang dieksekusitiapwaktu. • Isolasidapatdiatursewaktuterjaditransaksi data. • Terminologitransaksidisinidiartikansebagaisebuah set sql statement yang melakukanoperasitertentu. • Dalamsatutransaksibisaterdiridaribeberapa statement. • Jikadalameksekusinyasalahsatudari statement tersebutmengalamikegagalan, makasebuahtraksaksijugaakangagaldansegalaperubahan yang telahdilakukandapatdikembalikan.
Hal-halpentingterkaittransaksi • Atomic • Statement-statement yang digunakanpadatransaksidianggapsebagaisebuahsatu unit. • Consistent • Jikatransaksigagal database harustetapdalamkeadaan yang konsisten, sepertisebelumdiadakantransaksi. • Isolated • Sebuahtransaksiharusterisolasidaritransaksi yang lain. • Durable • Perubahan yang terjadisetelahtransaksiharuspermanen.
Transaksi • Dalamtransaksi, kitadapatmenyertakanbeberapasql statement. • Dari rangkaian statement tersebutdapatdibuatsebuahsavepoint • Savepoint • Acuanuntukdapatmengembalikankondisi database padakeadaandimanasavepointberada. • Keyword statement transaksi • START TRANSACTION • Menginstruksikanmysqlbahwaakandilakukansebuahtransaksi. • COMMIT • Menyimpanperubahanpada database. • ROLLBACK • Tidakmenyimpanperubahan (mengembalikankondisiawal database).
Transaksi • Secara default MySQLmempunyaivariabelsesiyaituautocommit yang bernilai 1 (default) • Artinyasetiapperintah query (baikDDLmaupunDML) dianggapsebagai statement query lengkapdansegeradisimpan. • Nilaivariabelinibisadiubahmenjadi 0 denganperintah SET AUTOCOMMIT = 0; jikainginmengaturstatusnyasecara manual. • Ketikamenggunakan statement START TRANSACTION, MySQLmengubahnilaiautocommit = 0, setelahmemanggil COMMIT, makanilainyadi-set kembalimenjadi 1. • Beberapaperintah SQL yang tidakdapatdi rollback olehtransaksi: • ALTER TABLE • CREATE INDEX • DROP DATABASE • DROP INDEX • DROP TABLE • LOCK TABLES • RENAME TABLES • SET AUTOCOMMIT=1 • START TRANSACTION • TRUNCATE TABLE • UNLOCK TABLES
Tabel-tabel yang digunakan lecturer enrolled students faculty grade_scale course
Contoh • Akandilakukan entry KRS (penambahanpadaisitabel enrolled) sebanyak 4 matakuliahuntukmahasiswa ‘12043094’ • Mata kuliah yang ditambahkan: ‘43210’, ‘43211’, ‘43212’ • Perintah query yang diberikanada 3: • insert into enrolled (sid, cid) values (‘12043094’,’43210’); • insert into enrolled (sid, cid) values (‘12043094’,’43211’); • insert into enrolled (sid, cid) values (‘12043094’,’43212’); • Ketiganyaharussuksesdijalankanataudigagalkansemuanya. • START TRANSACTION; • insert into enrolled (sid, cid) values (‘12043094’,’43210’); • insert into enrolled (sid, cid) values (‘12043094’,’43211’); • insert into enrolled (sid, cid) values (‘12043094’,’43212’); • COMMIT ;
Contoh • Jikadipanggil ROLLBACK, makaketiga record tidakakandisimpandalam data base. • START TRANSACTION; • insert into enrolled (sid, cid) values (‘12043094’,’43210’); • insert into enrolled (sid, cid) values (‘12043094’,’43211’); • insert into enrolled (sid, cid) values (‘12043094’,’43212’); • ROLLBACK;
Savepoint • Savepointmemungkinkankitakembalipadasuatukondisitertentupadatransaksi. • Sehinggajikakitakembalikankondisi data padasuatusavepointsegalaperubahan yang dilakukansetelahsavepointdapatdicommit, namunperubahansetelahsavepointtidakakantersimpan. • Untukkeperluanini, kitaharusmendefinisikansavepointdanmenggunakan keyword ROLLBACK TO SAVEPOINTuntukkembalipadasavepointtertentu. • Untukmembuatsebuahsavepoint: • SAVEPOINT<savepoint_name> • Kembalipadasavepointtertentu: • ROLLBACK TO SAVEPOINT<savepoint_name> • Untuksebuahnamasavepoint yang sudahdibuat, kemudiandalamtransaksi yang samadilakukanpenyimpanandengannama yang sama, makatransaksisebelumsavepointsebelumnyaakandi-commit.
Contoh • ContohpenggunaanSAVEPOINT • START TRANSACTION; • insert into enrolled (sid, cid) values ('12043094','43210'); • insert into enrolled (sid, cid) values ('12043094','43211'); • SAVEPOINTsp1; • insert into enrolled (sid, cid) values ('12043094','43212'); • ROLLBACK TO SAVEPOINT sp1; • update enrolled set grade='D' where sid = '12043094' and cid='43210'; • COMMIT; • Hasilnya, record pertamadankeduasaja yang akandisimpanpermanendalam database.
Any Question ? To Be Continued … Materi 7