인보이스 테이블의 각 레코드에 YYYYNNNNNN과 같은 ID가 있어야한다는 비즈니스 요구 사항이 있습니다.
NNNNNN 부품은 매년 초에 다시 시작해야합니다. 2016 년에 입력 한 첫 번째 행은 2016000001과 같고 두 번째 행은 2016000002와 같습니다. 2016 년의 마지막 레코드는 2016123456이고 다음 행 (2017 년)은 2017000001과 같아
이 키가 기본 키일 필요는 없으며 생성 날짜도 저장합니다. 아이디어는이 '표시 ID'가 독특하고 (따라서 쿼리 할 수 있음) 연도별로 그룹화 할 수 있다는 것입니다.
모든 레코드가 삭제되지는 않습니다. 그러나 나는 그런 것에 대해 방어 적으로 코드를 작성하는 경향이 있습니다.
올해 새로운 행을 삽입 할 때마다 최대 ID를 쿼리하지 않고이 ID를 만들 수있는 방법이 있습니까?
아이디어 :
- 그 해
CreateNewInvoiceSP
의MAX
가치를 얻는 A (yucky) - 정확하게이 작업을 수행 할 수있는 몇 가지 마법 기능이 내장되어 있습니다.
IDENTITY
또는DEFAULT
선언 에서 UDF 또는 무언가를 지정할 수 있음 (??)- 사용하는보기
PARTITION OVER + ROW()
(삭제 된 문제) - 에 트리거
INSERT
(여전히MAX
쿼리 를 실행해야 합니다 :() - 매년 백그라운드 작업으로 매년 삽입 된 MAX로 테이블을 업데이트했습니다.
모두 이상적이지 않습니다. 아이디어 나 변형은 환영합니다!