SQLite Forum

How to not to overwrite a row if the key exists?
First of all, you do not necessarily need multiple conflict resolution methods.

insert or ignore ... will insert the row(s) and ignore rows which violation any constraint (other than foreign key constraints).

insert ... on conflict do nothing will insert the row(s) and ignore row(s) which violate uniqueness constraints only.  Violation of any other constraint (NOT NULL, CHECK, FOREIGN KEY) will ABORT the statement.

They can be combined.    
insert or rollback ... on conflict do nothing  
would insert the row(s) if there was no constraint violations, ignore rows that had "unique" constraint violations, and for other constraint violations (NOT NULL and CHECK) would rollback the transaction.