hari ini saya akan bagikan tips bagaimana mengenerate nomor journal id secara otomatis pada saat memasukan data ke tabel. hal ini berguna untuk menghindari duplikat insert atau kegagalan insert jika field journal_id diset sebagai primary.
Contoh dibawah saya akan memasukan nomor journal id yang nomornya digenerate langsung dari tabel, asumsinya disini misalkan nomor journal id terakhir adalah "NPT000460" , perintahnya adalah sebagai berikut :
insert into ap_journal(journal_id) select 'NPT'+case len(isnull(max(substring(journal_id,4,6)),0)+1)
when 1 then '00000'
when 2 then '0000'
when 3 then '000'
when 4 then '00'
when 5 then '0'
end +
convert(varchar,isnull(max(substring(journal_id,4,6)),0)+1)
from ap_journal
penjelasan :
Contoh dibawah saya akan memasukan nomor journal id yang nomornya digenerate langsung dari tabel, asumsinya disini misalkan nomor journal id terakhir adalah "NPT000460" , perintahnya adalah sebagai berikut :
insert into ap_journal(journal_id) select 'NPT'+case len(isnull(max(substring(journal_id,4,6)),0)+1)
when 1 then '00000'
when 2 then '0000'
when 3 then '000'
when 4 then '00'
when 5 then '0'
end +
convert(varchar,isnull(max(substring(journal_id,4,6)),0)+1)
from ap_journal
penjelasan :
- perintah select 'NPT' : menampilkan 'NPT'
- Perintah
- case len(isnull(max(substring(journal_id,4,6)),0)+1)
when 1 then '00000'
when 2 then '0000'
when 3 then '000'
when 4 then '00'
when 5 then '0'
end- : menambahkan angka 0 didepan nomor journal_id tergantung dari panjangnya journal_id yang tertinggi ditambahkan 1
- perintah : convert(varchar,isnull(max(substring(journal_id,4,6)),0)+1) digunakan untuk mengambil running number dari journal_id yang tertinggi dari posisi 4 sebanyak 6, kenapa dari posisi 4? karena running number dimulai diposisi ini. kenapa sebanyak 6? karena running numbernya disediakan sebanyak 6 digit. supaya hasilnya nanti bisa digabungkan dengan hasil seleksi yang lain maka tipe datanya saya rubah ke varchar menggunakan perintah convert
- setiap pencarian select di berikan tanda + untuk menggabungkan string agar sesuai dengan format journal_id. (perintah + bisa juga digantikan dengan concat() )
- langkah terakhir adalah memasukan nomor tersebut ke tabel dengan perintah insert.