Autonumber memiliki keunggulan sebagai berikut : 1. mudah digenerate dan murah (tergantung pada algoritma pembuatan number)
kekurangan : bisa menyebabkan disk contention dimana serangkaian row yang memiliki id berdekatan diakses oleh beberapa thread Algoritma yang anda gunakan mengenerate untuk autonumber seperti di bawah cenderung boros proses. Lebih jelasnya select count dan max itu bisa berarti traversal table select count mungkin tidak jika statistik databasenya ada tapi jika tidak ada akan terjadi table traversal select max pasti melakukan tabel traversal. Table traversal adalah sebuah proses menjelajahi seluruh isi table. Selain itu solusi ini tidak scalable yaitu tidak mungkin diterapkan pada sistem yang kritis karena maasalah konkurensi dimana 2 atau lebih proses hendak membuat id dengan cara yang seperti tadi. Apalagi tadi lock yang digunakan adalah lock optimistic. Ini jelas masalah. Cara yang feasible adalah 1. menggunakan fitur autonumber dari msaccess atau fitur identity dari MSSQL Server 2k 2. membuat table ID generator contoh taIDGen ( namatable varchar(128), nomor int, primary key (namatable)) untuk menggunakannya gunakan cara berikut lock taidgen select nomor+1 as nomor2 from taidgen where namatable='nama table' update taidgen set nomor=nomor+1 where namatable='nama table' commit; releaselock taidgen. Untuk lebih detailnya silahkan lihat manual. Sorry agak lupa --- Padu Arsana W <[EMAIL PROTECTED]> wrote: > thanks atas koreksinya mas Lim. :) bener banget > kelemahannya jika ada yg terhapus maka udah pasti > ini akan manghasilkan nomor yang sama. > > cara hapus yg saya pake sih dgn tidak menghapus > record dari tabel tp memberi status record tersebut. > > > Salam, > Padu Arsana > > > [EMAIL PROTECTED] wrote: > > sorry ya mas Padu, nambahin dikit nih, > Sekedar input buat mr. thoyib, kalo pake fungsi > aggregate COUNT, > Rs.Open "SELECT Count(PMASUK.No_PM) AS JmREC From > MASUK", CN, adOpenDynamic, adLockOptimistic > kelemahannya adalah kalau ada record yang dihapus di > tengah2 maka fungsi count bisa menghasilkan > penomoran yang terduplikasi. > > mungkin bisa juga menggunakan fungsi MAX, cuma ya > agak reprot dikit. > misal : > SELECT CAST(MAX(RIGHT(NO_PM,3)) AS INT) AS JMREC > FROM MASUK > tapi ada kelemahannya juga, yaitu pada saat posisi > record masih kosong dia akan menghasilkan nilai > NULL. > jadi mesti dicek kalo isnull JMREC maka nomor > langsung dapet 001. > > semua kembali pada kita mo pake yang mana. > > Brgds, > Lim Agus Fitrian > > > > Padu Arsana W <[EMAIL PROTECTED]> > Sent by: [email protected] 01/27/2006 > 15:53 Please respond to > [email protected] > > > To > [email protected] cc > Subject > Re: [Programmer-VB] Auto Number > > > > > Dear Mr. thoyib > > > kayaknya udah pernah ada yang nanya and jawab ini! > but just to help u > ........... > > > > Wahana Programmer Groups Links > > > > > > > > SPONSORED LINKS > Programmer Indonesia Basic programming > language Computer programming languages > Programming languages Java programming language > > --------------------------------- > YAHOO! GROUPS LINKS > > > Visit your group "Programmer-VB" on the web. > > To unsubscribe from this group, send an email > to: > [EMAIL PROTECTED] > > Your use of Yahoo! Groups is subject to the > Yahoo! Terms of Service. > > > --------------------------------- > > > > > > > --------------------------------- > Bring words and photos together (easily) with > PhotoMail - it's free and works with Yahoo! Mail. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com Wahana Programmer Groups Links <*> Untuk mengunjungi sponsor milis ini, klik link berikut: http://wahanaprogrammer.net <*> Untuk menghubungi owner milis ini, kirim email ke: [EMAIL PROTECTED] <*> Konsultasi pemrogramman bisa chat disini: Yahoo! Messenger: wahanaprogrammer Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/Programmer-VB/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
