Как игнорировать ошибку «Дубликат ключа» в T-SQL (SQL Server) - PullRequest
48 голосов
/ 16 июля 2009

У меня есть транзакция, которая содержит несколько операторов SQL (INSERT, UPDATE и / или DELETES). При выполнении я хочу игнорировать операторы Duplicate Error и переходить к следующему оператору. Какой лучший способ сделать это?

Ответы [ 12 ]

0 голосов
/ 29 июня 2013

Используйте IGNORE_DUP_KEY = OFF во время определения первичного ключа, чтобы игнорировать дубликаты при вставке. например

create table X( col1.....)

CONSTRAINT [pk_X] PRIMARY KEY CLUSTERED 
(
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 70) ON [PRIMARY]
) ON [PRIMARY]
0 голосов
/ 16 июля 2009

Ключи должны быть уникальными. Не делай этого. Перепроектируйте по мере необходимости.

(если вы пытаетесь вставить, затем удалить, и вставка не удалась ... просто сначала удалите. Откат при ошибке в любом утверждении).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...