title: How to go about catching database and software version mismatch on deployed application?
body: <p>I'm developing a standalone application that accesses a common database on a server.  It will be used by a few dozen people in my organization.</p>
  
  <p>I know that I will need to update the software and the design of the database.  This creates the possibility that someone will perform a query on the database using old software.</p>
  
  <p>I already have a system in place that will catch if the user tries to start up an out-of-date version of the application.  However, this does not guard against someone who keeps the application up most of the time.</p>
  
  <p>My idea was to put a version entry in the database (in tblVersion or something like that) and check it each time any record in any table in the DB (except tblVersion) is added, updated, or deleted, <em>but not merely read.</em></p>
  
  <p>This way I could catch things that (I think) could corrupt the DB even if the user has an out-of-date version of the SW:  check the version in the DB against what's in the code, and disallow the add, update, or delete operation if there's a mismatch.  At the same time, I wouldn't be adding the overhead of a lot of checks to tblVersion for DB reads.</p>
  
  <p><strong>My questions:</strong>  Is this sound?  Is there a better way to go about it?  If so, what?</p>
  
  <p>Thanks!</p>