これがストアド プロシージャなしで実行できるとは楽観的ではありませんが、次のことが可能かどうか興味があります。
一致が見つかった場合は行を更新し、そうでない場合は更新されていた値でテーブルに挿入する単一のクエリ挿入/更新を作成したいと考えています。
だから...のようなもの
updateInsert into table_a set n = 'foo' where p='bar';
p='bar' の行がない場合、自動的に table_a set n = 'foo'; に挿入されます。
編集: いくつかのコメントに基づいて、 n は PRIMARY KEY ではなく、テーブルには実際に行を複製する自由が必要であることを明確にする必要があることがわかります。特定のエントリが一意である必要がある状況があります...おそらく、メタファーを悪い方法で混合しているだけで、このキーが一意である別のテーブルにこれを引き出す必要があります。