2011-04-27 3 views
2

저는 ASP.NET에서 클라이언트를위한 간단한 웹 양식을 작성하고 있습니다. 양식을 제출하면 전자 메일을 전송합니다. 요구 사항 중 하나는 각 전자 메일에 순차적 티켓 번호가 있어야한다는 것입니다.데이터베이스 테이블없이 일련 번호를 생성 할 수 있습니까?

마지막 두 숫자를 데이터베이스에 기록한 다음 선택하여 증가 시키거나 텍스트 파일과 비슷한 작업을 수행하는 두 가지 옵션이 있습니다.

가능하면 외부 종속성을 피하고 단일 값에 대한 데이터베이스 테이블을 만드는 것이 과도한 것처럼 보입니다. 그러나 텍스트 파일 접근법은 실제로는 해키입니다. 텍스트 파일을 삭제하거나 덮어 쓰면 오류가 발생하기 쉽습니다.

다른 옵션이 있습니까?

+1

2 열 데이터베이스 테이블을 만들었습니다. 추가 종속성을 소개하지만 잘 작동합니다. –

답변

4

대개 ID (자동 증분) 열이있는 데이터베이스를 사용합니다. 이는 대부분 동일한 스레드의 다중 스레드 또는 분산 된 버전 간의 잠금을 처리하기 때문입니다. 또한 시스템 재시작 및 기타 시스템 이벤트로부터 원활하게 복구됩니다.

대부분의 데이터베이스는 삽입 작업 중에 증가 된 ID를 반환하는 메서드를 제공하므로 증가 된 ID를 얻기 위해 레코드를 다시 선택하지 않아도됩니다.

+2

동의 하시겠지만, 그는 아마도 얼마나 많은 티켓이 발송되었는지 간단하게 알기를 원할 것입니다. 저기, 교장 선생님의 테이블에 날짜와 다른 정보를 넣을 수 있습니다. –

+0

가 동의합니다. datecreated/datemodified 항상 저렴한 비용으로 가치있는 정보입니다. –

+2

가볍게 지내고 싶다면 sqlite를 사용하는 것이 좋습니다. – Jess

0

응용 프로그램 상태에 카운터를 넣을 수 있습니다. 그러나 이러한 일은 애플리케이션 재시작 (예 : IIS restarrt)시 손실되고 팜의 여러 웹 서버 간에는 공유되지 않습니다. 권장하지 않습니다.

0

개체를 디스크에 직렬화 한 다음 필요할 때 deserialize 할 수 있습니다. 직렬화 된 파일을 보호 된 위치에 배치하십시오. 이 방법에는 동시성 문제가 있습니다.

관련 문제