1. A method for preserving data constraints during parallel apply in asynchronous transaction replication in a database system, comprising: (a) receiving and examining a transaction message; (b) determining if at least one row change in the transaction message has data constraints; (c) if so, determining if the at least one row change in the transaction message has a constraint violation with a row change in at least one preceding non-completed transaction message; and (d) if so, holding the transaction message until the at least one preceding non-completed transaction message completes.