package Ġcom . db flow 5 . annotation Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġhow Ġto Ġresolve Ġnull Ġor Ġunique Ġconflicts Ġwith Ġa Ġfield Ġmarked Ġas Ġ[ NotNull ] Ċ Ġ* Ġor Ġ[ Unique ] Ċ Ġ*/ Ċ enum Ġclass ĠConflict Action Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDo Ġnothing Ġand Ġdo Ġnot Ġspecify Ġany Ġalgorithm . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠNONE , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġan Ġapplicable Ġconstraint Ġviolation Ġoccurs , Ġthe ĠR OL L BACK Ġresolution Ġalgorithm Ġabort s Ġthe ĊĠĠĠĠ Ġ* Ġcurrent ĠSQL Ġstatement Ġwith Ġan ĠSQL ITE _ CONSTRAINT Ġerror Ġand Ġroll s Ġback Ġthe Ġcurrent Ġtransaction . ĊĠĠĠĠ Ġ* ĠIf Ġno Ġtransaction Ġis Ġactive Ġ( other Ġthan Ġthe Ġimplied Ġtransaction Ġthat Ġis Ġcreated Ġon Ġevery Ġcommand ) ĊĠĠĠĠ Ġ* Ġthen Ġthe ĠR OL L BACK Ġresolution Ġalgorithm Ġworks Ġthe Ġsame Ġas Ġthe Ġ[. ABORT ] Ġalgorithm . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠR OL L BACK , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġan Ġapplicable Ġconstraint Ġviolation Ġoccurs , Ġthe ĠAB ORT Ġresolution Ġalgorithm Ġabort s Ġthe Ġcurrent ĊĠĠĠĠ Ġ* ĠSQL Ġstatement Ġwith Ġan ĠSQL ITE _ CONSTRAINT Ġerror Ġand Ġback s Ġout Ġany Ġchanges Ġmade Ġby Ġthe Ġcurrent ĠSQL Ġstatement ; ĊĠĠĠĠ Ġ* Ġbut Ġchanges Ġcaused Ġby Ġprior ĠSQL Ġstatements Ġwithin Ġthe Ġsame Ġtransaction Ġare Ġpreserved Ġand ĊĠĠĠĠ Ġ* Ġthe Ġtransaction Ġremains Ġactive . ĠThis Ġis Ġthe Ġdefault Ġbehavior Ġand Ġthe Ġbehavior Ġspecified Ġby Ġthe ĠSQL Ġstandard . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠAB ORT , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġan Ġapplicable Ġconstraint Ġviolation Ġoccurs , Ġthe ĠFAIL Ġresolution Ġalgorithm Ġabort s Ġthe Ġcurrent ĊĠĠĠĠ Ġ* ĠSQL Ġstatement Ġwith Ġan ĠSQL ITE _ CONSTRAINT Ġerror . ĠBut Ġthe ĠFAIL Ġresolution Ġdoes Ġnot Ġback Ġout Ġprior ĊĠĠĠĠ Ġ* Ġchanges Ġof Ġthe ĠSQL Ġstatement Ġthat Ġfailed Ġnor Ġdoes Ġit Ġend Ġthe Ġtransaction . ĠFor Ġexample , ĊĠĠĠĠ Ġ* Ġif Ġan ĠUPDATE Ġstatement Ġencountered Ġa Ġconstraint Ġviolation Ġon Ġthe Ġ 1 0 0 th Ġrow Ġthat Ġit Ġattempts Ġto Ġupdate , ĊĠĠĠĠ Ġ* Ġthen Ġthe Ġfirst Ġ 9 9 Ġrow Ġchanges Ġare Ġpreserved Ġbut Ġchanges Ġto Ġrows Ġ 1 0 0 Ġand Ġbeyond Ġnever Ġoccur . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠFAIL , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġan Ġapplicable Ġconstraint Ġviolation Ġoccurs , Ġthe ĠIG NORE Ġresolution Ġalgorithm Ġskip s Ġthe ĊĠĠĠĠ Ġ* Ġone Ġrow Ġthat Ġcontains Ġthe Ġconstraint Ġviolation Ġand Ġcontinues Ġprocessing Ġsubsequent Ġrows Ġof Ġthe ĊĠĠĠĠ Ġ* ĠSQL Ġstatement Ġas Ġif Ġnothing Ġwent Ġwrong . ĠOther Ġrows Ġbefore Ġand Ġafter Ġthe Ġrow Ġthat Ġcontained ĊĠĠĠĠ Ġ* Ġthe Ġconstraint Ġviolation Ġare Ġinserted Ġor Ġupdated Ġnormally . ĠNo Ġerror Ġis Ġreturned Ġwhen Ġthe ĠIG NORE ĊĠĠĠĠ Ġ* Ġconflict Ġresolution Ġalgorithm Ġis Ġused . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠIG NORE , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġa ĠUNIQUE Ġor ĠPRIMARY ĠKEY Ġconstraint Ġviolation Ġoccurs , ĊĠĠĠĠ Ġ* Ġthe ĠREPLACE Ġalgorithm Ġdeletes Ġpre - existing Ġrows Ġthat Ġare Ġcausing Ġthe Ġconstraint Ġviolation Ġprior ĊĠĠĠĠ Ġ* Ġto Ġinserting Ġor Ġupdating Ġthe Ġcurrent Ġrow Ġand Ġthe Ġcommand Ġcontinues Ġexecuting Ġnormally . ĊĠĠĠĠ Ġ* ĠIf Ġa ĠNOT ĠNULL Ġconstraint Ġviolation Ġoccurs , Ġthe ĠREPLACE Ġconflict Ġresolution Ġreplaces Ġthe ĠNULL Ġvalue ĊĠĠĠĠ Ġ* Ġwith Ġthe Ġdefault Ġvalue Ġfor Ġthat Ġcolumn , Ġor Ġif Ġthe Ġcolumn Ġhas Ġno Ġdefault Ġvalue , ĊĠĠĠĠ Ġ* Ġthen Ġthe ĠAB ORT Ġalgorithm Ġis Ġused . ĊĠĠĠĠ Ġ* ĠIf Ġa ĠCHECK Ġconstraint Ġviolation Ġoccurs , Ġthe ĠREPLACE Ġconflict Ġresolution Ġalgorithm Ġalways Ġworks Ġlike ĠAB ORT . ĊĠĠĠĠ Ġ* ĠWhen Ġthe ĠREPLACE Ġconflict Ġresolution Ġstrategy Ġdeletes Ġrows Ġin Ġorder Ġto Ġsatisfy Ġa Ġconstraint , ĊĠĠĠĠ Ġ* Ġdelete Ġtriggers Ġfire Ġif Ġand Ġonly Ġif Ġrecursive Ġtriggers Ġare Ġenabled . ĊĠĠĠĠ Ġ* ĠThe Ġupdate Ġhook Ġis Ġnot Ġinvoked Ġfor Ġrows Ġthat Ġare Ġdeleted Ġby Ġthe ĠREPLACE Ġconflict Ġresolution Ġstrategy . ĊĠĠĠĠ Ġ* ĠNor Ġdoes ĠREPLACE Ġincrement Ġthe Ġchange Ġcounter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠREPLACE ; ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget SQLite Database Algorithm Int ( conflict Action : ĠConflict Action ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( conflict Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR OL L BACK Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAB ORT Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFAIL Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIG NORE Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREPLACE Ġ-> Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ