Program Club

SQL Server의 고유 키 위반-오류 2627을 가정해도 안전합니까?

proclub 2020. 11. 10. 22:33
반응형

SQL Server의 고유 키 위반-오류 2627을 가정해도 안전합니까?


UNIQUE개발중인 C # 응용 프로그램에서 특별한 방식으로 제약 조건 위반을 포착해야합니다 . Error 2627항상 이런 종류의 위반에 해당 한다고 가정하는 것이 안전한가요?

if (ThisSqlException.Number == 2627)
{
    // Handle unique constraint violation.
}
else
{
    // Handle the remaing errors.
}

?


2627은 고유 제약 조건 (기본 키 포함)이고 2601은 고유 인덱스입니다.

SELECT * FROM sys.messages
WHERE text like '%duplicate%' and text like '%key%' and language_id = 1033

다음은이를 찾기 위해 작성한 편리한 확장 방법입니다.

    public static bool IsUniqueKeyViolation(this SqlException ex)
    {
        return ex.Errors.Cast<SqlError>().Any(e => e.Class == 14 && (e.Number == 2601 || e.Number == 2627 ));
    }

근사치 내에서 그렇습니다.

MS 오류 및 이벤트 사이트에서 SQL Server 오류 2627을 검색하는 경우이 페이지에 도달해야합니다. 이 페이지 는 메시지가 항상 중복 키 위반과 관련이 있음을 나타냅니다 (매개 변수화되는 부분과 그렇지 않은 부분에주의).

Violation of %ls constraint '%.*ls'. Cannot insert duplicate key in object '%.*ls'.

참고 URL : https://stackoverflow.com/questions/6483699/unique-key-violation-in-sql-server-is-it-safe-to-assume-error-2627

반응형