Исключение при вставке дублирующихся строк в TDataSet

 
0
 
Q&A

БД - MySQL embedded
Zeos Database Objects
Delphi XE3

Отображается таблица из бд TZConnection-TZQuery-TDataSource-TDBGrid
Предполагается дальнейшее использование без DBGrid
Для вставки записей в таблицу решил использовать тот же ZQuery, что используется для отображения.


  for i := 0 to mCount - 1 do
  begin
    DataSource1.DataSet.Append;
    DataSource1.DataSet.Fields[1].AsString := ...[i]...;
    DataSource1.DataSet.Fields[2].AsString := ...[i]...;
    ...
  end;
  if i > 0 then
    DataSource1.DataSet.Post;
 
Одно из полей таблицы в бд - UNIQUE
Для обработки вставки дублирующихся по UNIQUE полю записей прикрутил TZUpdateSQL со своим вариантом запроса на вставку

INSERT IGNORE INTO  my_table (unique_field, ...) VALUES(:unique_field, ...) ON DUPLICATE KEY UPDATE field_xx = ...;
  
При попытке вставить дублирующуюся запись вываливается исключение

---------------------------
Debugger Exception Notification
---------------------------
Project Project6.exe raised exception class EZSQLException with message '0 record(s) updated. Only one record should have been updated.'.
---------------------------
Break   Continue   Help   
---------------------------

При этом запись в таблице бд обновляется как и задумано, но, как я понимаю, не подтверждается добавление строки и вываливается исключение. (похоже пытается вставить несколько раз)
Кто что посоветует, как лучше/правильней поступить?
Спасибо.
ps Хрен знает куда писать этот вопрос, на старом форуме это был бы раздел Программирование/Delphi, Kylix and Pascal/Базы данных

задан 10:32, 12.10.2018
ava 

Ответы (2)

Решил в обход.
Вставку сделал через дополнительный ZSQLProcessor
Только мне не нравится, что вставка каждой записи проходит в два этапа
1. Prepare SQL
2. Execute prepared   
Тогда как хотелось бы чтобы запрос Prepare SQL происходил один раз перед отправкой группы записей.  


p.s. А что, форум программистов сдох? Куда все перебрались?

отвечен 10:40, 13.10.2018
ava 


Тоже интерисует куда все делись?! такое сообщество было мощное.

отвечен 20:49, 19.10.2018
ava 


Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить