2012-08-23 2 views
4

숙련 된 개발자에게는 매우 간단한 시나리오가 될 수 있지만 초보자로서 나는 오랫동안이 문제에 매달 렸습니다. 사용자가 패키지를 구입할 수있는 asp.net에 웹 사이트를 만들고 있습니다. 이 패키지에는 구매와 관련하여 만료일이 있습니다 (예 : 구매 후 2 개월, 6 개월 등).날짜에 도달하면 SQL Server의 특정 행을 만료시키는 방법은 무엇입니까?

문제는 구매 날짜 기준으로 계산 한 날짜와 시간과 정확히 동일한 날짜와 시간에 각 패키지를 만료하는 방법입니다. 이 일을하는 방법?

SQL Server Express Edition 2008과 asp.net 4.0을 사용하고 있습니다. 당신이 수, 당신은 여전히 ​​데이터베이스에서 제거하고자하는 경우

SELECT PackageName 
FROM Package 
WHERE ExpiryDate>GETDATE() 

:

+0

"만료"란 무엇을 의미합니까? 데이터베이스에서 삭제 하시겠습니까? 필드를 "만료 됨"으로 표시 하시겠습니까? – robert

+0

트리거에 대해 읽으십시오. –

+1

@WaqarJanjua n 개월이 지나면 트리거가 아닙니다. – Meryovi

답변

0

당신은에 의해 만료 무엇을 의미하는지에 조금 따라 달라집니다 - 플래그 기록을, 당신은 데이터를 삭제 하시겠습니까을, 아니면 그냥 숨길거야 사용자의 화면에서.

어느 쪽이든, 만료 날짜를 테이블 (? packages)의 열로 추가하고 계산 된 만료 날짜를이 열에 저장해야합니다.

당신은 다음과 같은 옵션이 있습니다

  • 실행이 만료되면, 기록을 만료/삭제하는 작업을 즉 CURRENT_TIMESTAMP is > ExpiryDate (당신이 쓰기 예해야하므로 SQL Express는, SQL 에이전트가없는 Windows 서비스 또는 Windows 작업 스케줄러로 연결).
  • 또는 애플리케이션을 변경하여 만료일 값 (예 : DateTime.Now >= ExpiryDate)을 '확인'한 다음 사용자를 UI에서 숨기거나 숨길 수 있습니다.
+0

이 경우 Windows 서비스가 작동 할 수 있습니다. 먼저이 옵션을 시도해 보겠습니다. – vivek

6

오히려 기록을 삭제하는 대신, 자신의 만료 날짜를 기준으로 레코드를 제외 것이다 자리에 WHERE 절을 넣을 수 만료 된 레코드를 삭제할 것입니다 매일/시간 등 실행되는 자리에 SQL Job을 넣어 :

DELETE FROM Package 
WHERE ExpiryDate<GETDATE() 
+0

SQL 작업에 대해 읽는 중입니다. 덕분에 – vivek