2011-11-02 2 views
4

내가 저장 프로 시저 내부에 있습니다SQL 서버 - 저장 프로 시저 - 무시 예외

INSERT INTO SitesCategories(SiteID, CategoryID) VALUES(@SITEID, @TempCId); 

나는 테이블에이 제약이 있기 때문에이 삽입 예외를 던질 수 :

ALTER TABLE dbo.SitesCategories 
    ADD CONSTRAINT UniqueSiteCategPair 
    UNIQUE (SiteId,CategoryID); 

나는이 제약을 만들었을 따라서 쌍 (@SITEID, @ TempCId)의 고유 항목을 삽입 할 때를 확인할 필요가 없습니다. 하지만 저장 프로 시저 내에서 실행되면 SQl 예외가 throw되기를 원하지 않습니다. 저장 프로 시저 내에서 예외를 "catch"하고 프로 시저 내부에서 작업을 계속 수행하려면 어떻게합니까?

답변

2

만들 경우 UNIQUE CONSTRAINTIGNORE_DUP_KEY = ON 설정으로, 다음 중복 자동으로 무시됩니다, 예를 들어, 그들은 당신의 테이블에 삽입되지 않을 것입니다. 그러나 예외는 던져 질 것입니다 :

+0

이것이 내가 필요한 것이다. – Ghita

5
  BEGIN TRY 
       INSERT INTO SitesCategories(SiteID, CategoryID) VALUES(@SITEID, @TempCId); 
      END TRY 
      BEGIN CATCH 
      END CATCH; 
+0

Tnx Anja. 그래서 이것은 T-SQL에서 예외를 잡는 방법입니다. 내가 정확히 알고 싶지 않았기 때문에 나는 marc_s 대답을 선택했다 :-) – Ghita