Как вставить несколько элементов одновременно, когда не все они соответствуют ограничениям? - PullRequest
0 голосов
/ 25 апреля 2011

Я использую InsertAllOnSubmit, но когда происходит сбой, поскольку элемент не подчиняется ограничениям, элемент не вставляется.

Есть ли способ вставить все допустимые элементы?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

Мне пришлось использовать INSERT OR IGNORE

0 голосов
/ 25 апреля 2011

Обычный способ сделать это - не дать пользователю вначале маршалировать неверные данные. Это то, что пользовательский интерфейс делает, действуя согласованно с базой данных. Например, если ожидается, что пользователь предоставит название города в Калифорнии, пользовательский интерфейс должен

  • реализовать список выбора (он же комбинированный) содержащий только названия городов на калифорнийском или
  • разрешить пользователю вводить что-либо, проверьте посмотреть, является ли введенное значение город в Калифорнии, и вернуть информационное сообщение об ошибке, если оно не
  • другие вещи, о которых я не могу думать сейчас, потому что я сонный

Другой нормальный способ - отправлять каждую «строку» или «набор» данных в виде отдельных транзакций. Неверные данные будут выполнять откат только для собственной транзакции, а не для всей партии. Это влияет на производительность; почти всегда быстрее вставлять 1000 строк как одну транзакцию из 1000 строк, а не как 1000 транзакций по одной строке.

...