Senin, 15 Desember 2008

membuat unik nomor untuk banyak transaksi

Kasus yang akan di ambil untuk judul ini adalah seperti berikut:

di sebuah aplikasi terdiri dari empat buah modul, katakanlah modul a, b, c, dan dan d, keempat modul tersebut menggunakan penomoran yang sama. misalkan nomor 100 sudah di gunakan di modul a, maka modul b,c,d tidak bisa menggunakan nomor 100.


salah satu solusi untuk problem di atas dapat menggunakan sebuah tabel untuk meyimpan nomor terakhir yang digunakan.

katakanlah tabel tersebut bernama tbl_nomor, table tersebut untuk menyimpan nomor terakhir yang di gunakan. secara simpel nya struktur tablenya seperti di bawah ini.
FIELDTIPE DATA
titlevarchar(255)
nomorint




field title, digunakan untuk memberi judul nomor saja, dan field nomor untuk menyimpan nomor terakhir.

cara penggunaan tabel tersebut adalah :
  1. sebelum insert data, di lakukan dahulu query ke tbl_nomor, untuk mengambil nomor yang tersimpan di field nomor.
  2. setelah di dapat nomor nya di tambahkan nilai satu
  3. baru insert data
  4. lakukan update nomor pada tbl_nomor

jadi dalam satu proses ada tiga query yang di jalankan (select nomor, insert data, update nomor), untuk menjamin nomor yang di dapat valid manfaatkan statement commit dan roolback, ilustrasinya seperti di bawah ini:

start transaction

<1:>
query tbl_nomor
<2:> increment nomor
<3:> insert data
<4:> update tbl_nomor

commit


bila terjadi gagal eksekusi query di tahap <4:> update tbl_nomor, maka proses di tahap <3:> insert data, akan di batalkan/roolback.

bila anda menggunakan database mysql, untuk memanfaatkan fasilitas commit dan roolback, tipe tabel yang support adalah inodb

Tidak ada komentar:

Posting Komentar