Due to the granularity of the SQLite error codes, it is impossible to distinguish between the
duplicate primary key and other constraint violations. As a result, when making an object
persistent, the SQLite ODB runtime will translate all constraint violation errors to the
object_already_persistent exception (Section 3.14, "ODB Exceptions").
1. duplicate primary key
2. other constraint violations(for example: not null section set to null)