2016-09-13 4 views
0

SQL Server에서 뷰나 테이블을 가져올 수있는 계획 도구가 있습니다. 나는 tblPlanning 테이블에서 'to plan'상태의 레코드 만 가져옵니다. 계획 도구에서 가져온 가져 오기 후 가져온 레코드의 상태를 '계획'으로 지정합니다. vExportPlanning 뷰가 호출 된 후에 저장 프로 시저를 실행하기 위해 트리거를 사용할 수 있다고 생각했지만 트리거는 UPDATE/DELETE/INSERT 문에만 사용됩니다. 누군가 나를 올바른 방향으로 향하게 할 수 있습니까? 감사! * 대체 여기. 선택하는 동안SQL Server에서 쿼리를 실행 한 후 업데이트

+1

저장 프로 시저가 끝나면 처리 된 레코드의 상태를 업데이트하는 업데이트 문을 작성하십시오. –

+0

@Prdp는 SP이어야합니다. 계획 도구가 SP를 발사 할 수 있습니까? 계획 도구에서 오류가 발생하면 레코드가 완전히 자동으로 업데이트됩니다 (예 : 소프트웨어가 레코드를로드하는 중 충돌이 발생하지만 SQL 서버가 레코드를 업데이트 함). – JohnHC

답변

0

이 작업을 수행 할 수 있습니다 또는 '*'난 당신이 모든 열을 선택합니다 쿼리에

Select col1,col2,....,'Planned' as status from tblPlanning 
where status='Plan' 

아래로, 당신은 동안을 선택 할 것을 권장합니다

업데이트 컬럼 이름별로.

0

방금 ​​데이터를 선택했을 때 실제로 데이터를 업데이트하지 않아야하는 이유가 있습니다. 물론,보기는 응용 프로그램에서 읽을 수 있으며, 데이터를 작업하고보기를 읽는 것만으로 행을 업데이트 할 수 있습니다. 이것은 뭔가를 동기화하는 빠른 방법처럼 들리 겠지만, 당신이보기를 테스트하고 싶어한다고 상상해보십시오. 일부 데이터를 검색하려고했기 때문에 실수로 업데이트 된 행에 문제가 생길 수 있습니다.

그래서 선택 이전/이후에 무언가를 트리거하는 것은 "좋은"디자인과 관련이 없습니다.

다른 언급했듯이 (나는 완전히 동의합니다) 테이블을 반환하는 저장 프로 시저 또는 함수를 사용해야합니다. 후자의 경우, 기본적으로 뷰와 같이 작동하는 함수가 있지만, 반환 된 데이터를 업데이트하기위한 코드를 실행할 수 있습니다.

응용 프로그램에서 어떤 종류의 업데이트와 삽입으로 비슷한 문제가 발생하는지에 따라 커서의 개념을 살펴볼 수도 있습니다.

관련 문제