Teknik Locking pada MSSQL

Alkisah suatu hari ada seorang temen developer mengeluh, karena program dia untuk mengelola data nomer urut yang seharusnya unik ternyata ada duplikasi-duplikasi pada urutannya. Kasus seperti ini sangat krusial dan butuh teknik ektra untuk mengatasinya.



Salah satu penyebab terjadinya duplikasi adalah lambatnya salah satu client untuk mengupdate field next number untuk nomer urutnya. Sehingga client yang lain 'sukses' mengambil nomer urut yang sama sehingga terjadi duplikasi nomer urut.

Teringat saat menggunakan foxpro dengan database dbf-nya yang sangat terkenal, dimana dengan foxpro hal seperti ini sangat mudah diatasi dengan locking exclusive table maupun record.

Temen tersebut menggunakan MSSQL database. Setelah berkelana cari dan baca sana sini dari google beserta pengalaman logic dari menggunakan foxpro. Akhirnya dia disarankan, menggunakan sintak seperti dibawa:

Begin transaction
select .... from ... with (rowlock,xlock) where ...
update ...

commit transaction

dengan sintax ini maka client lain yang berusaha membaca dan melocking record tidak dapat melakukan select, sebelum commit transaction dilakukan

Begin Transaction
Apa itu begin transaction?
Suatu lingkup sintax SQL yang harus dikerjakan sebagai satu kesatuan didefinisikan dengan Begin transaction diawal. Jika ada kegagalan pada salah perintah maka perintah rollback dapat dilakukan untuk membatalkan semua perintah yang telah dilakukan dalam Begin transaction.
 
Commit Transaction
Commit transaction adalah sintax dari MSSQL yang menandakan bahwa perubahan-perubahan data yang dilakukan setelah Begin transaction boleh dilakukan permanen dalam field-field.

Rowlock
Rlock adalah locking pada record.

Xlock 
Xlock adalah locking exclusive pada table.

Ada tambahan atau koreksi? Silahkan sampaika di komentar.
==
Tempat diskusi MSSQL database.


Penulis adalah konsultan IT yang telah berkecimpung di dunia IT sejak 1997, suka teknologi makan rawon dan soto. Mengelolah forum yang masih sepi pengunjung hahaha.

Tidak ada komentar :

Posting Komentar