ловушка ошибки первичного ключа - PullRequest
1 голос
/ 26 октября 2009

Я хочу перехватить ошибку первичного ключа sql-2000 в c # и разработать свою собственную ошибку, например «это дубликат счета-фактуры»

пожалуйста, ответьте, как это сделать в приложении c #.

Thanx.

Ответы [ 2 ]

1 голос
/ 26 октября 2009

Как правило, это не считается хорошим дизайном. Вы должны проверить наличие дубликатов ключей перед вставкой и полагаться на ограничения БД только как на «сеть безопасности».

Но если вам захочется это сделать, вам нужно поймать исключение SQLException. Затем вам нужно использовать атрибут SQLException (в частности ErrorCode и Number), чтобы проверить, является ли это нарушением PK.

Но в целом проверка точной причины SQLException является сложной задачей и зависит от используемой СУБД, поэтому это не очень хороший и надежный подход. Это одна из причин, почему это не рекомендуется (см. Выше).

0 голосов
/ 26 октября 2009

Вместо того, чтобы обрабатывать это как исключение, если вы ожидаете, что это произойдет, вы должны проверить, существует ли определенный идентификатор до его вставки.

...