I've mentioned this bit of code recently:
INSERT INTO accession_analysis ( accession_id , analysis_id , reference_id , status , status_text , extra_parameters ) SELECT accession_id , ? , ? , ? , ? , ?, ? FROM accessions WHERE request_id = ? ORDER BY accession_id
Well, it's slightly different. Before we were just holding the current state ( waiting, working, success, failure ) and now we're holding text information, too, and you don't just want the current state, you want to be able to look back. So, in addition to
accession_analysis
, we're adding accession_analysis_status
, which will have, so far, a unique id, an id for the AA it connects to, and then the the status information.
And the run now. I have to add a run number to the
accession_analysis
schema. I can do that, but that's not germane right now.
What is germane is how to store the status into
accession_analysis_status
at about the same time as it goes into accession_analysis
, getting the id
from the accession_analysis
table. It would be far easier if I was using an iterative approach, but then I'm blasting the DB with many connections instead of just one.
An approach would be to find all the
accession_analysis
elements without a matching accession_analysis_status
, and then inserting them into accession_analysis_status
. Something like
INSERT INTO accession_analysis_status ( aa_id , status , status_text ) SELECT id , status ,status_text FROM accession_analysis WHERE there's no aa_id corresponding to the id in accession_analysis
But clearly, I don't know how to express this as SQL yet.