Saya memiliki persyaratan bisnis yang setiap catatan dalam tabel Faktur memiliki id yang terlihat seperti YYYYNNNNNNN.
Bagian NNNNNN perlu memulai kembali pada awal setiap tahun. Jadi baris pertama yang dimasukkan pada 2016 akan terlihat seperti 2016000001 dan yang kedua seperti 2016000002 dll. Katakanlah rekor terakhir untuk 2016 adalah 2016123456, Baris berikutnya (tahun 2017) akan terlihat seperti 2017000001
Saya tidak perlu id ini menjadi kunci utama dan saya menyimpan tanggal pembuatan juga. Idenya adalah bahwa 'tampilan id' ini unik (jadi saya bisa menanyakannya) dan dapat dikelompokkan berdasarkan manusia, berdasarkan tahun.
Tidak mungkin ada catatan yang akan dihapus; Namun, saya akan cenderung kode pertahanan terhadap sesuatu seperti itu.
Apakah ada cara saya bisa membuat id ini tanpa harus mencari id maksimum tahun ini setiap kali memasukkan baris baru?
Ide ide:
- A
CreateNewInvoiceSP
, yang mendapatMAX
nilai untuk tahun itu (yucky) - Beberapa fitur magis bawaan untuk melakukan hal ini (saya dapat bermimpi dengan benar)
- Mampu menentukan beberapa UDF atau sesuatu di dalam
IDENTITY
atauDEFAULT
deklarasi (??) - Tampilan yang menggunakan
PARTITION OVER + ROW()
(dihapus akan bermasalah) - Pemicu aktif
INSERT
(masih perlu menjalankan beberapaMAX
permintaan :() - Pekerjaan latar belakang tahunan, memperbarui meja dengan MAX untuk setiap tahun dimasukkan yang kemudian saya ... Sesuatu ?!
Semuanya agak tidak ideal. Ada ide atau variasi yang disambut baik!