Fatura tablosundaki her kaydın YYYYNNNNNN'ye benzeyen bir kimliği olması gereken bir iş gereksinimim var.
NNNNNN parçasının her yılın başında yeniden başlatılması gerekir. Yani 2016'da girilen ilk satır 2016000001 ve ikincisi 2016000002 vb.Gibi görünecektir.
Birincil anahtar olmak için bu kimliğe ihtiyacım yok ve oluşturma tarihini de saklıyorum. Fikir, bu 'display id' benzersizdir (bu yüzden sorgulayabilirim) ve insan grubu yapabiliyor.
Herhangi bir kaydın silinmesi olası değildir; Ancak, böyle bir şeye karşı defansif kodlama eğilimi olacaktır.
Yeni bir satır eklemek her zaman bu yıl max id sorgulamak zorunda kalmadan bu kimliği oluşturmak için herhangi bir yolu var mı?
fikirler:
- A
CreateNewInvoiceSP,MAXo yılın değerini alır (yucky) - Tam olarak bunu yapmak için bazı büyülü yerleşik özellik (doğru hayal edebilirim)
IDENTITYVeyaDEFAULTbeyanında bazı UDF veya bir şey belirtebilme (??)- Kullanan bir görünüm
PARTITION OVER + ROW()(silinen sorunlu olur) - Bir tetikleyici
INSERT(yine de bazıMAXsorgu çalıştırmanız gerekir :() - Yıllık bir arka plan işi, eklenen her yıl için MAX ile bir tablo güncelledi hangi sonra ... Bir şey ?!
Hepsi biraz ideal değil. Herhangi bir fikir veya varyasyon olsa hoş geldiniz!