2014-03-02 4 views
1

asp.NET C#을 사용하고 있으며 SQL Server 2005 데이터베이스에 테이블이 있습니다. 학생이 애플리케이션 인터페이스에서 특정 버튼을 클릭하면 세션에서 가져올 학생 ID를 StudentID 속성에 저장해야합니다. 특정 시간 (예 : 오전 9시)에 테이블 레코드를 자동으로 삭제하려고합니다. 이러한 삭제 된 레코드를 어딘가에 보관할 수 있다면 더 좋을 것입니다. Google에서 검색 한 결과 로그 트리거를 만들어야한다는 것을 알았지 만 하루에 두 번 (두 시간 만에) 테이블 레코드를 삭제하려는 최상의 상황이 될지 확실하지 않습니다. !SQL 서버 2005 데이터베이스에서 테이블 레코드 삭제 및 삭제 된 레코드 유지

사실 나는 트리거를 사용하지 않았지만 어쨌든 레코드를 삭제하는 데 사용한다는 것을 읽었습니다.

SQL 서버 2005 데이터베이스 테이블의 레코드를 삭제에 관한 어떤 도움을 이해할 수있을 것이다

..

감사합니다.

답변

1

테이블과 동일한 SP 쓰기 명령문에서 레코드를 삭제하여 아카이브 테이블에 삭제 된 레코드를 삽입하는 저장 프로 시저를 작성하십시오. 키워드를 삭제하면 테이블에서 삭제 된 행에 액세스 할 수 있습니다. 이제 일단 SP 작성을 마치면이 SP에서 SQL Server로 작업을 만들고 요구 사항에 따라 일정을 계획하십시오.

또는 삭제 논리를 저장 프로 시저에 넣고 삽입 테이블 간 논리를 주 테이블에서 개발 된 트리거로 옮길 수 있습니다. 참조 용

확인이 아웃 : http://technet.microsoft.com/en-us/library/ms177564.aspx

+1

그것은이 명확하지 않다 저장 프로 시저를 만드는 것이 많이 여기에 추가됩니다 –

+0

@MarcGravell 네, 맞습니다. SP를 만들지 않고도 할 수 있습니다. 내 생각에 따르면 SQL 작업을 생성하는 것은 재사용 가능성 (하나 이상의 SQL 서버 작업에 대해 동일한 SP를 사용할 수 있음)을 추가하기 때문에 SP로 유지 관리가 가능할 것입니다. –

+0

주기적으로 데이터를 삭제하고 보관하는 것이 필요합니다. 내 의견에 따르면, 요구 사항을 해결하기 위해 SQL 작업이 가장 적합해야합니다. –

3

정기 SQL 트리거가 잘 작동합니다 : 또는

create trigger FooDeleteTrigger on Foo 
after delete 
as 
insert FooArchive (...columns...) 
select ...columns... 
from deleted 

, 모두를 하나의 명령 :

delete from Foo 
output deleted.col1, deleted.col2, ... 
into FooArchive 
--where clause as needed, etc 
+0

사용하는 것이 더 좋은지 잘 모르겠습니다. 트리거 또는 저장 프로 시저? 나는 둘 다 경험이 없다. 그래서 제발 결정하는 데 도움이됩니다 .. – user3287580

+0

@ user3287580 어느 쪽이든 실제로 저장 프로 시저를 언급하지는 않았지만 어느 쪽이든 잘 작동합니다. –

관련 문제