Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Как получить SQL error code?  (Прочитано 1122 раз)

tech26

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Как получить SQL error code?
« : 14 Октября 2022, 10:58:27 »
В таблице рецептов БД предусмотрена уникальность по имени (строковое наименование рецепта). При попытке добавить рецепт с уже существующим именем БД выдаёт ошибку Error Code: 1062. Duplicate entry '...
Как поймать эту ошибку в simple scada и выдать соответствующее сообщение пользователю?
Скрипт на событие "Ошибка SQL запроса" не срабатывает.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Как получить SQL error code?
« Ответ #1 : 15 Октября 2022, 13:53:22 »
Здравствуйте.

Если в запросе используется ключевое слово "IGNORE", то ошибки возникающие во время вставки будут игнорироваться (подробнее см. по ссылке). В этом случае, вместо ошибки MySQL сервер будет генерировать предупреждение. Поэтому в скаду ошибка не приходит.

Если использовать инструкцию "INSERT" без "IGNORE", то MySQL сервер вернёт ошибку и ее можно будет обработать в скрипте по событию "Ошибка SQL запроса". Например, если колонка имени уникальна, то при попытке вставки строки с существующим именем MySQL сервер вернёт ошибку, в которой будет одержаться слово "UNIQUE". Можно выполнить поиск по тексту ошибки и выдать предупреждение:
Код: (delphi)
begin
  if Pos('UNIQUE', Msg) <> 0 then // если ошибка содержит слово "UNIQUE", то выдать предупреждение
    ShowMessageAll('Ошибка!', 'Введенное имя уже существует.' );
end.