Validation between PLC Data and HMI/SQL Data

I have a Batch System that is tied to a SQL DB.

My biggest concern is the integrity of data and to make sure it is the same between PLC and SQL DB.

It looks like there are two possible options and want to know if either way is preferred over the other.

Currently, after an Operator sets up a Run, they click a button to perform a download of the information. Information gets sent to the SQL DB and PLC. Is there a way I can check the data in the PLC before I commit information to the DB?

Second option, I do checks for valid data before the download button appears. When operator clicks on the Download button, I send the info to the DB and have the Transaction Groups do the validation check between the PLC and SQL DB.

You'll probably have to give up your transaction groups. They don't really do race-free handshaking. Script your data transfer instead. On top of that, you will want to use the*() function(s) after your trigger to ensure the data from the PLC is actually the data from after the trigger. (OPC tags won't guarantee this for you.)

What should the transaction groups be used for?