Какова стратегия конфликта по умолчанию для запросов на вставку в СУБД SQLite и комнате ORM? - PullRequest
0 голосов
/ 30 мая 2018

На самом деле, я думаю, что я понял ответ.SQLite терпит неудачу, если я пытаюсь нарушить ограничения при вставке строки.Room ORM игнорирует запрос в том же сценарии.Я прав с этой информацией?

Я не понимаю, почему они оба ведут себя так по-разному.Кроме того, я не нашел нигде упомянутого в документации Room .Документы говорят мне, что я могу передать свою собственную стратегию разрешения конфликтов, но нигде не указана стратегия по умолчанию.Особенно, когда это отличается от стратегии SQLite DBMS.Может кто-нибудь помочь мне лучше понять это?

Edit 1

Хорошо, теперь я знаю, что запрос вставки Room имеет стратегию конфликта ABORT .Вот ссылка на документы , где она упоминается.Также по умолчанию Sqlite ABORT .Однако в Room Abort означает, что запрос возвращает длинное значение, как и обычный запрос вставки.В Sqlite Abort означает , в котором будет отображена ошибка ограничения.Все еще смущен этим.

1 Ответ

0 голосов
/ 30 мая 2018

Как отметил @Luksprog в комментариях.По умолчанию для стратегии используется ABORT как в Room, так и в базе данных SQLite.И то и другое выдает ошибку, когда мы нарушаем любое ограничение.Однако я использовал стратегию замены (я следовал за каким-то блогом или кодовой меткой) и не заметил этого.Просто глупая ошибка с моей стороны.

...