Kann man das denn nicht mit mehreren Querys hintereinander erledigen, so nach dem Motto:
if exists then update else insert;
wobei exists schaut, ob's den PK schon gibt ('Select count(*) where PK = :MyPK'), und update und insert halt entsprechende
SQL-Statements abschicken.