2011-03-14 9 views
0

을 사용하여 최종 사용자에게 데이터를 삽입하도록 제한하는 경우 뷰의 WITH CHECK OPTION을 사용하여 제한 할 수있는 삽입 쿼리를 사용하여 INSERT 사용자를 제한 할 수 있습니까?저장된 프로 시저를 사용하여 저장 프로 시저

스티브와 피터 만이 ITEM 테이블에 데이터를 삽입하기를 원합니다. 모든 사용자 이름으로 구성된 ITEM 테이블에 'USERS'열을 추가했습니다. 내가보기를 사용하는 경우 이에 대한 후 체크 옵션에 내가 제공 :

WHERE username='steve' OR username='peter' WITH CHECK OPTION 

하지만 내가 어떻게이 저장 프로 시저를 사용합니까?

답변

3

이와 비슷한 것. 사용자를 먼저 테스트하고 허용할지 여부를 결정해야합니다. 테스트는 재사용을 위해 다른 저장된 proc 또는 UDF로 랩핑 될 수 있습니다.

질문 : 스티브 (Steve) 또는 피터 (Peter)가보기를 실행하는 사람임을 어떻게 보았습니까?

CREATE PROC myProc 
    @p1 int 
AS 
SET NOCOUNT ON 

BEGIN TRY 
    IF SUSER_SNAME() NOT IN ('steve', 'peter') 
     RAISERROR ('Oi: Steve and Peter only', 16, 1) 

END TRY 
BEGIN CATCH 
    ... 
END CATCH 
GO 

는 응용 프로그램에 로그인 할 것 stored proc template

+0

스티브 여기 내 대답을 참조하십시오. 그래서 그가보기를 실행할 때보기는 그의 사용자 이름을 검사 할 것입니다. 내 테이블에 이전에 이미 사용자 이름이 삽입되어 있기 때문에 – sqlchild