Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Парсинг ошибок  [new]
Апельсин
Member

Откуда: Оранжевое настроение
Сообщений: 114
Hi.
MSSQL иногда говорит
INSERT statement conflicted with
COLUMN FOREIGN KEY constraint 'CN'.
The conflict occurred in database 'DB',
table 'TB', column 'CL'.
Пришли данные которые содержат ссылку на справочник, а сам обновленный справочник не пришел. Тогда мне хочется вставить в справочник код на который ссылаются данные и повторить вставку. Потом, когда придет справочник, обновится значение. Чтобы этот алгоритм заработал мне нужно выцепить названия констрайнта, таблицы и колонки. Это можно сделать распарсив строку сообщения ошибки, но вообще говоря она может изменится при локализации или редактировании сообщений. Можно ли получить названия объектов на клиенте способом, который будет работать и при изменении сообщений об ошибках
25 авг 05, 14:12    [1817220]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг ошибок  [new]
ChA
Member

Откуда: Москва
Сообщений: 11136
Апельсин
Hi.
MSSQL иногда говорит
INSERT statement conflicted with
COLUMN FOREIGN KEY constraint 'CN'.
The conflict occurred in database 'DB',
table 'TB', column 'CL'.
Пришли данные которые содержат ссылку на справочник, а сам обновленный справочник не пришел. Тогда мне хочется вставить в справочник код на который ссылаются данные и повторить вставку. Потом, когда придет справочник, обновится значение. Чтобы этот алгоритм заработал мне нужно выцепить названия констрайнта, таблицы и колонки. Это можно сделать распарсив строку сообщения ошибки, но вообще говоря она может изменится при локализации или редактировании сообщений. Можно ли получить названия объектов на клиенте способом, который будет работать и при изменении сообщений об ошибках
С локализацией и редактированием придется самому разбираться, а парсинг можно попробовать сделать с помощью xp_sscanf...
25 авг 05, 14:25    [1817270]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг ошибок  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
Потом, когда придет справочник, обновится значение. Чтобы этот алгоритм заработал мне нужно выцепить названия констрайнта, таблицы и колонки.


Зачем Вам чего "выцеплять"?! Вам надо по пришедшим данным получить набор кодов, которых нет в справочнике и вставить их.

INSERT ... FROM ... WHERE NOT EXISTS () 

автор
Чтобы этот алгоритм заработал мне нужно выцепить названия констрайнта, таблицы и колонки.


А это вот должно быть "зашито" в процедуру обновления.
25 авг 05, 14:28    [1817285]     Ответить | Цитировать Сообщить модератору
 Re: Парсинг ошибок  [new]
Апельсин
Member

Откуда: Оранжевое настроение
Сообщений: 114
ChA
С локализацией и редактированием придется самому разбираться, а парсинг можно попробовать сделать с помощью xp_sscanf...
Ух, хорошо, что я про эту функцию не знал, а то бы сделал через неё и табличку sysmessages, а сейчас последовал совету
pkarklin
А это вот должно быть "зашито" в процедуру обновления.
Всё просто и быстро. И зачем я это хотел на клиенте делать :) ?..
25 авг 05, 16:18    [1817800]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить